diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 7891f62e..2b179346 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,6 +1,11 @@
sc_usb_audio Change Log
=======================
+6.14.1
+------
+ - RESOLVED: UAC 1.0 descriptors now support multi-channel volume control (previously were
+ hard-coded as stereo)
+
6.14.0
------
- ADDED: Support for for master-clock/sample-rate divides that are not a power of 2
diff --git a/README.rst b/README.rst
index 18c62999..0a54128c 100644
--- a/README.rst
+++ b/README.rst
@@ -1,7 +1,6 @@
USB Audio Shared
................
-:Latest release: 6.14.0beta2
:Maintainer: xross
:Description: USB Audio Shared Components. For use in the XMOS USB Audio Refererence Designs.
diff --git a/module_usb_audio/endpoint0/descriptors.h b/module_usb_audio/endpoint0/descriptors.h
index c8d02437..c1250f77 100644
--- a/module_usb_audio/endpoint0/descriptors.h
+++ b/module_usb_audio/endpoint0/descriptors.h
@@ -2244,7 +2244,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 ) */
@@ -2320,15 +2320,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 */
@@ -2366,15 +2392,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
diff --git a/module_usb_audio/pdm_mics/pcm_pdm_mic.xc b/module_usb_audio/pdm_mics/pcm_pdm_mic.xc
index cf2821ce..7a791eb0 100644
--- a/module_usb_audio/pdm_mics/pcm_pdm_mic.xc
+++ b/module_usb_audio/pdm_mics/pcm_pdm_mic.xc
@@ -72,7 +72,7 @@ void pdm_process(streaming chanend c_ds_output_0, streaming chanend c_ds_output_
{
for(int i = 0; i < NUM_PDM_MICS; i++)
{
- c_audio <: output[i]*decimationfactor;
+ c_audio <: output[i];
}
}
else
diff --git a/xpd.xml b/xpd.xml
index ecd1a659..1922b7ce 100644
--- a/xpd.xml
+++ b/xpd.xml
@@ -105,4 +105,4 @@
1.0
-
\ No newline at end of file
+