diff -r e7d2d738d3c2 -r 2f92ad2dc5db kernel/eka/drivers/pbus/mmc/sdcard/sdcard3c/sdcard.cpp --- 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; }