forked from PAWPAW-Mirror/lib_xua
Merge pull request #388 from ed-xmos/fetaure/multi_interface
Changes for variable channel count ADAT Tx interfaces
This commit is contained in:
@@ -11,6 +11,8 @@ UNRELEASED
|
|||||||
* FIXED: Incorrect internal input EP count for input only devices
|
* FIXED: Incorrect internal input EP count for input only devices
|
||||||
* ADDED: MIDI unit and subsystem tests
|
* ADDED: MIDI unit and subsystem tests
|
||||||
* FIXED: ADAT Tx called too frequently
|
* FIXED: ADAT Tx called too frequently
|
||||||
|
* CHANGED: ADAT Tx presents different channel count interfaces based on sample
|
||||||
|
rate
|
||||||
* CHANGED: aud_to_host buffer size and the condition to come out of underflow
|
* CHANGED: aud_to_host buffer size and the condition to come out of underflow
|
||||||
in decoupler to fix buffer underflow seen in ADAT tests
|
in decoupler to fix buffer underflow seen in ADAT tests
|
||||||
* FIXED: Initialise SMUX based on DEFAULT_FREQ in clockgen
|
* FIXED: Initialise SMUX based on DEFAULT_FREQ in clockgen
|
||||||
|
|||||||
@@ -412,6 +412,28 @@
|
|||||||
#define SPDIF_TX_INDEX (0)
|
#define SPDIF_TX_INDEX (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables SPDIF Rx. Default: 0 (Disabled)
|
||||||
|
*/
|
||||||
|
#ifndef XUA_SPDIF_RX_EN
|
||||||
|
#define XUA_SPDIF_RX_EN (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief S/PDIF Rx first channel index, defines which channels S/PDIF will be input on.
|
||||||
|
* Note, indexed from 0.
|
||||||
|
*
|
||||||
|
* Default: NONE (Must be defined by app when SPDIF_RX enabled)
|
||||||
|
*/
|
||||||
|
#if (XUA_SPDIF_RX_EN) || defined (__DOXYGEN__)
|
||||||
|
#ifndef SPDIF_RX_INDEX
|
||||||
|
#error SPDIF_RX_INDEX not defined and XUA_SPDIF_RX_EN defined
|
||||||
|
#define SPDIF_RX_INDEX 0 /* Default define for doxygen */
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Enables ADAT Tx. Default: 0 (Disabled)
|
* @brief Enables ADAT Tx. Default: 0 (Disabled)
|
||||||
*/
|
*/
|
||||||
@@ -419,32 +441,35 @@
|
|||||||
#define XUA_ADAT_TX_EN (0)
|
#define XUA_ADAT_TX_EN (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Calculate max ADAT channels based on sample rate range. Used for Tx and Rx */
|
||||||
|
#if (MIN_FREQ < 88200)
|
||||||
|
#define ADAT_MAX_CHANS (8)
|
||||||
|
#elif (MIN_FREQ < 176400)
|
||||||
|
#define ADAT_MAX_CHANS (4)
|
||||||
|
#else
|
||||||
|
#define ADAT_MAX_CHANS (2)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Set the maximum number of channels for ADAT */
|
||||||
|
#if XUA_ADAT_TX_EN
|
||||||
|
#define ADAT_TX_MAX_CHANS ADAT_MAX_CHANS
|
||||||
|
#else
|
||||||
|
#define ADAT_TX_MAX_CHANS (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Defines which output channels (8) should be output on ADAT. Note, Output channels indexed from 0.
|
* @brief Defines which output channels (8) should be output on ADAT. Note, Output channels indexed from 0.
|
||||||
*
|
*
|
||||||
* Default: 0 (i.e. channels [0:7])
|
* Default: 0 (i.e. channels [0:7])
|
||||||
* */
|
* */
|
||||||
#ifndef ADAT_TX_INDEX
|
#if (XUA_ADAT_TX_EN) || defined(__DOXYGEN__)
|
||||||
#define ADAT_TX_INDEX (0)
|
#ifndef ADAT_TX_INDEX
|
||||||
#endif
|
#define ADAT_TX_INDEX (0)
|
||||||
|
#endif
|
||||||
/**
|
|
||||||
* @brief Enables SPDIF Rx. Default: 0 (Disabled)
|
#if (ADAT_TX_INDEX + ADAT_TX_MAX_CHANS > NUM_USB_CHAN_OUT)
|
||||||
*/
|
#error Not enough channels for ADAT Tx
|
||||||
#ifndef XUA_SPDIF_RX_EN
|
|
||||||
#define XUA_SPDIF_RX_EN (0)
|
|
||||||
#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
|
#endif
|
||||||
#else
|
|
||||||
#define ADAT_RX_MAX_CHANS (0)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -454,17 +479,11 @@
|
|||||||
#define XUA_ADAT_RX_EN (0)
|
#define XUA_ADAT_RX_EN (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/* Set the maximum number of channels for ADAT */
|
||||||
* @brief S/PDIF Rx first channel index, defines which channels S/PDIF will be input on.
|
#if XUA_ADAT_RX_EN
|
||||||
* Note, indexed from 0.
|
#define ADAT_RX_MAX_CHANS ADAT_MAX_CHANS
|
||||||
*
|
#else
|
||||||
* Default: NONE (Must be defined by app when SPDIF_RX enabled)
|
#define ADAT_RX_MAX_CHANS (0)
|
||||||
*/
|
|
||||||
#if (XUA_SPDIF_RX_EN) || defined (__DOXYGEN__)
|
|
||||||
#ifndef SPDIF_RX_INDEX
|
|
||||||
#error SPDIF_RX_INDEX not defined and XUA_SPDIF_RX_EN defined
|
|
||||||
#define SPDIF_RX_INDEX 0 /* Default define for doxygen */
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -474,20 +493,20 @@
|
|||||||
* Default: NONE (Must be defined by app when XUA_ADAT_RX_EN is true)
|
* Default: NONE (Must be defined by app when XUA_ADAT_RX_EN is true)
|
||||||
*/
|
*/
|
||||||
#if (XUA_ADAT_RX_EN) || defined(__DOXYGEN__)
|
#if (XUA_ADAT_RX_EN) || defined(__DOXYGEN__)
|
||||||
#ifndef ADAT_RX_INDEX
|
#ifndef ADAT_RX_INDEX
|
||||||
#error ADAT_RX_INDEX not defined and XUA_ADAT_RX_EN is true
|
#error ADAT_RX_INDEX not defined and XUA_ADAT_RX_EN is true
|
||||||
#define ADAT_RX_INDEX (0) /* Default define for doxygen */
|
#define ADAT_RX_INDEX (0) /* Default define for doxygen */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (ADAT_RX_INDEX + ADAT_RX_MAX_CHANS > NUM_USB_CHAN_IN)
|
||||||
|
#error Not enough channels for ADAT Rx
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (ADAT_RX_INDEX + ADAT_RX_MAX_CHANS > NUM_USB_CHAN_IN)
|
|
||||||
#error Not enough channels for ADAT
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (XUA_ADAT_RX_EN)
|
|
||||||
|
|
||||||
/* Setup input stream formats for ADAT */
|
/* Setup input stream formats for ADAT */
|
||||||
#if (MAX_FREQ > 96000)
|
#if (XUA_ADAT_RX_EN)
|
||||||
|
#if (MAX_FREQ > 96000)
|
||||||
#if (MIN_FREQ > 96000)
|
#if (MIN_FREQ > 96000)
|
||||||
#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
|
||||||
@@ -501,7 +520,7 @@
|
|||||||
#define HS_STREAM_FORMAT_INPUT_2_CHAN_COUNT (NUM_USB_CHAN_IN - 4)
|
#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)
|
#define HS_STREAM_FORMAT_INPUT_3_CHAN_COUNT (NUM_USB_CHAN_IN - 6)
|
||||||
#endif
|
#endif
|
||||||
#elif (MAX_FREQ > 48000)
|
#elif (MAX_FREQ > 48000)
|
||||||
#if (MIN_FREQ > 48000)
|
#if (MIN_FREQ > 48000)
|
||||||
#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
|
||||||
@@ -510,11 +529,44 @@
|
|||||||
#define HS_STREAM_FORMAT_INPUT_1_CHAN_COUNT NUM_USB_CHAN_IN
|
#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_2_CHAN_COUNT (NUM_USB_CHAN_IN - 4)
|
||||||
#endif
|
#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
|
#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
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -991,7 +1043,18 @@
|
|||||||
#define HS_STREAM_FORMAT_INPUT_3_CHAN_COUNT NUM_USB_CHAN_IN
|
#define HS_STREAM_FORMAT_INPUT_3_CHAN_COUNT NUM_USB_CHAN_IN
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Channel count defines for output streams */
|
||||||
|
#ifndef HS_STREAM_FORMAT_OUTPUT_1_CHAN_COUNT
|
||||||
|
#define HS_STREAM_FORMAT_OUTPUT_1_CHAN_COUNT NUM_USB_CHAN_OUT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HS_STREAM_FORMAT_OUTPUT_2_CHAN_COUNT
|
||||||
|
#define HS_STREAM_FORMAT_OUTPUT_2_CHAN_COUNT NUM_USB_CHAN_OUT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HS_STREAM_FORMAT_OUTPUT_3_CHAN_COUNT
|
||||||
|
#define HS_STREAM_FORMAT_OUTPUT_3_CHAN_COUNT NUM_USB_CHAN_OUT
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Sample sub-slot size (bytes) of input stream Alternate 1 when running in high-speed
|
* @brief Sample sub-slot size (bytes) of input stream Alternate 1 when running in high-speed
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -1460,8 +1460,8 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2=
|
|||||||
ID_IT_USB, /* 3 bTerminalLink (Linked to USB input terminal) */
|
ID_IT_USB, /* 3 bTerminalLink (Linked to USB input terminal) */
|
||||||
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 *),
|
||||||
},
|
},
|
||||||
@@ -1551,8 +1551,8 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2=
|
|||||||
ID_IT_USB, /* 3 bTerminalLink (Linked to USB input terminal) */
|
ID_IT_USB, /* 3 bTerminalLink (Linked to USB input terminal) */
|
||||||
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 *)),
|
||||||
},
|
},
|
||||||
@@ -1642,8 +1642,8 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2=
|
|||||||
ID_IT_USB, /* 3 bTerminalLink (Linked to USB input terminal) */
|
ID_IT_USB, /* 3 bTerminalLink (Linked to USB input terminal) */
|
||||||
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 *),
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user