kernel/eka/drivers/usbcc/chapter9.cpp
changeset 128 21b8e4e0ff99
parent 90 947f0dc9f7a8
child 253 d37db4dcc88d
--- a/kernel/eka/drivers/usbcc/chapter9.cpp	Tue Apr 27 15:10:09 2010 +0100
+++ b/kernel/eka/drivers/usbcc/chapter9.cpp	Wed Apr 28 16:16:32 2010 +0100
@@ -1136,8 +1136,19 @@
 	// New configuration is the same as the old one (but not 0)
 	if (iCurrentConfig == aValue)
 		{
-		// no-op
 		__KTRACE_OPT(KUSB, Kern::Printf("  Configuration: New == Old == %d --> exiting", aValue));
+
+		// From the spec 9.1.1.5, Data toggle is reset to zero here when 
+		// setconfiguration(x->x)(x!=0) received, although we only support
+		// single configuration currently.
+		TInt num = 0;
+		TInt ret = DoForEveryEndpointInUse(&DUsbClientController::ResetDataToggle, num);
+		if(ret != KErrNone)
+			{
+			__KTRACE_OPT(KPANIC, Kern::Printf("  Error: Endpoint data toggle reset failed"));
+			}
+		__KTRACE_OPT(KUSB, Kern::Printf("  Called ResetDataToggle()for %d endpoints", num));	
+	
 		return;
 		}
 	// Device is already configured