Decouple no longer remembers dsdMode. It always sends through changes. EP should only send though changes as required.

This commit is contained in:
Ross Owen
2014-04-08 15:45:37 +01:00
parent 708b310df9
commit f0341dcd8b

View File

@@ -7,7 +7,6 @@
#ifdef NATIVE_DSD #ifdef NATIVE_DSD
#include "usbaudio20.h" /* Defines from the USB Audio 2.0 Specifications */ #include "usbaudio20.h" /* Defines from the USB Audio 2.0 Specifications */
unsigned g_curDsdMode = DSD_MODE_OFF;
#endif #endif
#ifdef HID_CONTROLS #ifdef HID_CONTROLS
@@ -876,19 +875,13 @@ void decouple(chanend c_mix_out,
dsdMode = DSD_MODE_NATIVE; dsdMode = DSD_MODE_NATIVE;
} }
/* To avoid clicks and pops only change mode if we have to */ /* Wait for the audio code to request samples and respond with command */
if(dsdMode != g_curDsdMode) inuint(c_mix_out);
{ outct(c_mix_out, SET_DSD_MODE);
g_curDsdMode = dsdMode; outuint(c_mix_out, dsdMode);
/* Wait for the audio code to request samples and respond with command */ /* Wait for handshake back */
inuint(c_mix_out); chkct(c_mix_out, XS1_CT_END);
outct(c_mix_out, SET_DSD_MODE);
outuint(c_mix_out, dsdMode);
/* Wait for handshake back */
chkct(c_mix_out, XS1_CT_END);
}
#endif #endif
asm("outct res[%0],%1"::"r"(buffer_aud_ctl_chan),"r"(XS1_CT_END)); asm("outct res[%0],%1"::"r"(buffer_aud_ctl_chan),"r"(XS1_CT_END));