From a4bace28a6a58356c18583fe07e99e8f7df462f8 Mon Sep 17 00:00:00 2001 From: Ross Owen Date: Fri, 13 Sep 2013 23:36:36 +0100 Subject: [PATCH] Audio 2 config desc patched based on speed (for FS UAC2 mode). Guarded by FULL_SPEED_AUDIO_2 --- module_usb_audio/endpoint0/endpoint0.xc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/module_usb_audio/endpoint0/endpoint0.xc b/module_usb_audio/endpoint0/endpoint0.xc index 04848746..fb6eae2f 100755 --- a/module_usb_audio/endpoint0/endpoint0.xc +++ b/module_usb_audio/endpoint0/endpoint0.xc @@ -124,6 +124,7 @@ void Endpoint0( chanend c_ep0_out, chanend c_ep0_in, chanend c_audioControl, chanend ?c_mix_ctl, chanend ?c_clk_ctl, chanend ?c_usb_test) { unsigned char buffer[2]; + USB_SetupPacket_t sp; XUD_ep ep0_out = XUD_InitEp(c_ep0_out); XUD_ep ep0_in = XUD_InitEp(c_ep0_in); @@ -613,6 +614,27 @@ void Endpoint0( chanend c_ep0_out, chanend c_ep0_in, chanend c_audioControl, devDesc_Audio1, sizeof(devDesc_Audio1), cfgDesc_Audio1, sizeof(cfgDesc_Audio1), strDescs, sp, c_usb_test, g_curUsbSpeed); +#elif FULL_SPEED_AUDIO_2 + /* Return Audio 2.0 Descriptors for high_speed and full-speed */ + + /* Unfortunately we need to munge the descriptors a bit between full and high-speed */ + if(g_curUsbSpeed == XUD_SPEED_HS) + { + /* Mod bSlotSize */ + cfgDesc_Audio2[STREAMING_ALT1_OFFSET+4] = 4; + } + else + { + /* Mod bSlotSize */ + cfgDesc_Audio2[STREAMING_ALT1_OFFSET+4] = 3; + } + + retVal = USB_StandardRequests(ep0_out, ep0_in, + devDesc_Audio2, sizeof(devDesc_Audio2), + cfgDesc_Audio2, sizeof(cfgDesc_Audio2), + null, 0, + null, 0, + strDescs, sp, c_usb_test, g_curUsbSpeed); #else /* Return Audio 2.0 Descriptors with Null device as fallback */ retVal = USB_StandardRequests(ep0_out, ep0_in,