kernel/eka/drivers/pbus/mmc/sdcard/sdcard3c/sdcard.cpp
branchRCL_3
changeset 22 2f92ad2dc5db
parent 19 4a8fed1c0ef6
child 42 a179b74831c9
--- a/kernel/eka/drivers/pbus/mmc/sdcard/sdcard3c/sdcard.cpp	Mon Mar 15 12:45:50 2010 +0200
+++ b/kernel/eka/drivers/pbus/mmc/sdcard/sdcard3c/sdcard.cpp	Wed Mar 31 23:38:45 2010 +0300
@@ -481,6 +481,12 @@
 		// Before issueing commands, see if there's actually a card present
 		if (!CardDetect(iCxCardCount))
 			SMF_GOTOS(EStMoreCardsCheck)
+		
+		// Card Previously Marked as Corrupt do not re-initialise	
+		if ((CardArray().CardP(iCxCardCount)->iFlags)& KSDCardIsCorrupt)
+		    {
+            SMF_GOTOS(EStMoreCardsCheck)
+		    }
 
 		m.SetTraps(KMMCErrResponseTimeOut);
 		SMF_INVOKES(InitialiseMemoryCardSMST, EStSendCIDIssued)
@@ -814,6 +820,7 @@
 					{
 					__KTRACE_OPT2(KPBUS1, KPANIC, Kern::Printf("-sd:ocr busy timed out"));
 					OstTraceFunctionExitExt( DSDSTACK_INITIALISEMEMORYCARDSM_EXIT2, this, (TInt) KMMCErrBusTimeOut );
+					(CardArray().CardP(iCxCardCount)->iFlags)|=KSDCardIsCorrupt;
 					return KMMCErrBusTimeOut;
 					}