From 31bfa779bb71583096a8c39dd64db095713f1d56 Mon Sep 17 00:00:00 2001 From: Sam Chesney Date: Thu, 11 Sep 2014 10:39:44 +0100 Subject: [PATCH] Reset state of endpoints associated with EA Native interface when changing an alternative setting. --- module_usb_audio/endpoint0/endpoint0.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/module_usb_audio/endpoint0/endpoint0.c b/module_usb_audio/endpoint0/endpoint0.c index 744a7dcf..016468c0 100755 --- a/module_usb_audio/endpoint0/endpoint0.c +++ b/module_usb_audio/endpoint0/endpoint0.c @@ -342,6 +342,11 @@ void Endpoint0(chanend c_ep0_out, chanend c_ep0_in, chanend c_audioControl, /* Check the alt is in range */ if (sp.wValue <= IAP_EA_NATIVE_TRANS_ALT_COUNT) { + /* Reset all state of endpoints associated with this interface + * when changing an alternative setting. See USB 2.0 Spec 9.1.1.5 */ + XUD_ResetEpStateByAddr(ENDPOINT_ADDRESS_IN_IAP_EA_NATIVE_TRANS); + XUD_ResetEpStateByAddr(ENDPOINT_ADDRESS_OUT_IAP_EA_NATIVE_TRANS); + /* Send selected Alt interface number onto EA Native EP manager */ outuint(c_EANativeTransport_ctrl, (unsigned)sp.wValue);