kernel/eka/drivers/usbcc/chapter9.cpp
branchRCL_3
changeset 110 c734af59ce98
parent 87 2f92ad2dc5db
child 253 d37db4dcc88d
--- a/kernel/eka/drivers/usbcc/chapter9.cpp	Tue Apr 27 18:02:57 2010 +0300
+++ b/kernel/eka/drivers/usbcc/chapter9.cpp	Tue May 11 17:28:22 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