kernel/eka/drivers/usbcc/chapter9.cpp
changeset 139 95f71bcdcdb7
parent 90 947f0dc9f7a8
child 253 d37db4dcc88d
--- a/kernel/eka/drivers/usbcc/chapter9.cpp	Fri May 14 17:13:29 2010 +0300
+++ b/kernel/eka/drivers/usbcc/chapter9.cpp	Thu May 27 14:17:14 2010 +0300
@@ -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