UAC1.0 descriptors now support multi-channel volume control (previously were hard-coded as stereo)

This commit is contained in:
Ross Owen
2015-12-08 16:05:44 +00:00
parent 32a171fa44
commit cc886a643c

View File

@@ -2246,7 +2246,7 @@ const unsigned num_freqs_a1 = MAX(3, (0
#endif
));
#define AC_TOTAL_LENGTH (AC_LENGTH + (INPUT_INTERFACES_A1 * (19 + num_freqs_a1 * 3)) + (OUTPUT_INTERFACES_A1 * (19 + (num_freqs_a1 *3))))
#define AC_TOTAL_LENGTH (AC_LENGTH + (INPUT_INTERFACES_A1 * (17 + NUM_USB_CHAN_IN_FS + num_freqs_a1 * 3)) + (OUTPUT_INTERFACES_A1 * (17 + NUM_USB_CHAN_OUT_FS + (num_freqs_a1 *3))))
#define STREAMING_INTERFACES (INPUT_INTERFACES_A1 + OUTPUT_INTERFACES_A1)
/* Number of interfaces for Audio 1.0 (+1 for control ) */
@@ -2322,15 +2322,41 @@ unsigned char cfgDesc_Audio1[] =
11, /* iTerminal */
/* CS_Interface class specific AC interface feature unit descriptor - mute & volume for dac */
0x0A,
(8 + NUM_USB_CHAN_OUT_FS),
UAC_CS_DESCTYPE_INTERFACE,
UAC_CS_AC_INTERFACE_SUBTYPE_FEATURE_UNIT, /* 2 bDescriptorSubType: FEATURE_UNIT */
0x0A, /* unitID */
0x01, /* sourceID - ID of the unit/terminal to which this feature unit is connected */
0x01, /* controlSize - 1 */
0x00, /* bmaControls(0) */
#if (NUM_USB_CHAN_OUT_FS > 0)
0x03, /* bmaControls(1) */
#endif
#if (NUM_USB_CHAN_OUT_FS > 1)
0x03, /* bmaControls(2) */
#endif
#if (NUM_USB_CHAN_OUT_FS > 2)
0x03, /* bmaControls(3) */
#endif
#if (NUM_USB_CHAN_OUT_FS > 3)
0x03, /* bmaControls(4) */
#endif
#if (NUM_USB_CHAN_OUT_FS > 4)
0x03, /* bmaControls(5) */
#endif
#if (NUM_USB_CHAN_OUT_FS > 5)
0x03, /* bmaControls(6) */
#endif
#if (NUM_USB_CHAN_OUT_FS > 6)
0x03, /* bmaControls(7) */
#endif
#if (NUM_USB_CHAN_OUT_FS > 7)
0x03, /* bmaControls(8) */
#endif
#if (NUM_USB_CHAN_OUT_FS > 8)
#error NUM_USB_CHAN_OUT_FS > 8 currently supported
#endif
0x00, /* String table index */
/* CS_Interface Output Terminal Descriptor - Analogue out to speaker */
@@ -2368,15 +2394,40 @@ unsigned char cfgDesc_Audio1[] =
0x00, /* Unused */
/* CS_Interface class specific AC interface feature unit descriptor - mute & volume for adc */
0x0A,
(8 + NUM_USB_CHAN_IN_FS),
UAC_CS_DESCTYPE_INTERFACE,
UAC_CS_AC_INTERFACE_SUBTYPE_FEATURE_UNIT, /* 2 bDescriptorSubType: FEATURE_UNIT */
0x0B, /* unitID */
0x02, /* sourceID - ID of the unit/terminal to which this feature unit is connected */
0x01, /* controlSize - 1 */
0x00, /* bmaControls(0) */
#if (NUM_USB_CHAN_IN_FS > 0)
0x03, /* bmaControls(1) */
#endif
#if (NUM_USB_CHAN_IN_FS > 1)
0x03, /* bmaControls(2) */
#endif
#if (NUM_USB_CHAN_IN_FS > 2)
0x03, /* bmaControls(3) */
#endif
#if (NUM_USB_CHAN_IN_FS > 3)
0x03, /* bmaControls(4) */
#endif
#if (NUM_USB_CHAN_IN_FS > 4)
0x03, /* bmaControls(5) */
#endif
#if (NUM_USB_CHAN_IN_FS > 5)
0x03, /* bmaControls(6) */
#endif
#if (NUM_USB_CHAN_IN_FS > 6)
0x03, /* bmaControls(7) */
#endif
#if (NUM_USB_CHAN_IN_FS > 7)
0x03, /* bmaControls(8) */
#endif
#if (NUM_USB_CHAN_IN_FS > 8)
#error NUM_USB_CHAN_IN_FS > 8 currently supported
#endif
0x00, /* String table index */
#endif