diff -r 2b433474f2ba -r 957c583b417b kerneltest/e32test/pccd/d_mmctest.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kerneltest/e32test/pccd/d_mmctest.h Mon Oct 04 12:03:52 2010 +0100 @@ -0,0 +1,131 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// This header provides the interface to MMCIF.LDD, which provides a set of +// direct interface functions with the kernel MultiMediaCard Controller +// +// + +#if !defined(__D_MMCTEST_H__) +#include +#ifndef __KERNEL_MODE__ +#include +#endif + +// +enum TMmcMediaType {EMmcROM,EMmcFlash,EMmcIO,EMmcOther,EMmcNotSupported}; +// +const TInt KMaxCardsPerStack=2; +const TInt KSectorSizeInBytes=512; +const TInt KSectorSizeShift=9; +const TInt KDrvBufSizeInSectors=8; + +/** +@internalComponent +*/ +class TMmcCardInfo + { +public: + inline TMmcCardInfo() + {memset(this,0x00,sizeof(TMmcCardInfo)); iMediaType=EMmcNotSupported;} +public: + TBool iIsReady; + TBool iIsLocked; + TUint8 iCID[16]; + TUint8 iCSD[16]; + TUint16 iRCA; + TMmcMediaType iMediaType; + TInt64 iCardSizeInBytes; + TUint iReadBlLen; + TUint iWriteBlLen; + TBool iReadBlPartial; + TBool iWriteBlPartial; + TBool iReadBlkMisalign; + TBool iWriteBlkMisalign; + TInt iReadCurrentInMilliAmps; + TInt iWriteCurrentInMilliAmps; + TUint iSpecVers; + TUint iTAAC; + TUint iNSAC; + TUint iTransferSpeed; + TUint iCommandRegister; + TBool iHighCapacity; + }; + +/** +@internalComponent +*/ +class TCapsMmcIfV01 + { +public: + TVersion version; + }; + +/** +@internalComponent +*/ +class RMmcCntrlIf : public RBusLogicalChannel + { +public: + enum {EMajorVersionNumber=1,EMinorVersionNumber=0,EBuildVersionNumber=1}; + enum TRequest + { + EReqReadSect, + EReqWriteSect, + EReqPwrUp, + EReqReadExtCSD, + EReqMMCInfoPrint + }; + enum TControl + { + ESvReset, + ESvPwrDown, + ESvRegisterEvent, + EExecSelectCard, + EExecStackInfo, + EExecCardInfo + }; +public: + inline void Cancel(); + inline TInt Open(TInt aStack,const TVersion& aVer) + {return(DoCreate(_L("MmcTest"),aVer,(TInt)aStack,NULL,NULL));} + inline TVersion VersionRequired() const + {return(TVersion(EMajorVersionNumber,EMinorVersionNumber,EBuildVersionNumber));} + inline void Reset() + {DoControl(ESvReset);} + inline void PwrDownStack() + {DoControl(ESvPwrDown);} + inline TInt StackInfo(TUint& aCardsPresentMask) + {return(DoControl(EExecStackInfo,&aCardsPresentMask));} + inline TInt SelectCard(TInt aCard) + {return(DoControl(EExecSelectCard,(TAny*)aCard));} + inline TInt CardInfo(TMmcCardInfo& anInfo) + {return(DoControl(EExecCardInfo,&anInfo));} + +// inline TInt RegisterEvent(TUint anEventMask,TRequestStatus *aReqStat) +// {return(DoControl(ESvRegisterEvent,(TAny*)anEventMask,(TAny*)aReqStat));} + + inline void PwrUpAndInitStack(TRequestStatus& aStatus) + {DoRequest(EReqPwrUp,aStatus);} + inline void ReadSector(TRequestStatus &aStatus,TInt aSectNum,TDes8 &aDes) + {DoRequest(EReqReadSect,aStatus,(TAny*)aSectNum,(TAny*)&aDes);} + inline void WriteSector(TRequestStatus &aStatus,TInt aSectNum,const TDesC8 &aDes) + {DoRequest(EReqWriteSect,aStatus,(TAny*)aSectNum,(TAny*)&aDes);} + inline void ReadExtCSD(TRequestStatus& aStatus, TDes8& aExtCSD) + {DoRequest(EReqReadExtCSD, aStatus, (TAny*) &aExtCSD, NULL);} + inline void PrintCardRegisters(TRequestStatus& aStatus) + {DoRequest(EReqMMCInfoPrint,aStatus);} + + }; +// +#endif