diff --git a/module_usb_audio/endpoint0/audiorequests.xc b/module_usb_audio/endpoint0/audiorequests.xc index 0ce5f2ac..9e1cda5a 100644 --- a/module_usb_audio/endpoint0/audiorequests.xc +++ b/module_usb_audio/endpoint0/audiorequests.xc @@ -792,9 +792,21 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c int i = 2; int currentFreq44 = 44100; int currentFreq48 = 48000; + unsigned maxFreq = MAX_FREQ; + +#if defined (FULL_SPEED_AUDIO_2) + unsigned usbSpeed; + asm("ldw %0, dp[g_curUsbSpeed]" : "=r" (usbSpeed) :); + + if (usbSpeed == XUD_SPEED_FS) + { + maxFreq = MAX_FREQ_A1; + } +#endif + while(1) { - if(currentFreq48 <= MAX_FREQ) + if(currentFreq48 <= maxFreq) { /* Note i passed byref here */ storeFreq(buffer, i, currentFreq48); @@ -804,7 +816,7 @@ int AudioClassRequests_2(XUD_ep ep0_out, XUD_ep ep0_in, USB_SetupPacket_t &sp, c num_freqs++; currentFreq44*=2; } - else if(currentFreq44 <= MAX_FREQ) + else if(currentFreq44 <= maxFreq) { storeFreq(buffer, i, currentFreq44); num_freqs++;