--- a/emulator/emulatorbsp/inc/variantmediadef.h Mon May 03 13:33:44 2010 +0300
+++ b/emulator/emulatorbsp/inc/variantmediadef.h Fri May 14 16:58:21 2010 +0300
@@ -57,4 +57,17 @@
#define NAND_NUMMEDIA 1
#define NAND_DRIVENAME "Nand"
+// Variant parameters for test NFE media extension driver
+#define NFE_DRIVECOUNT 2
+#define NFE_DRIVELIST 1,5
+#define NFE_DRIVELETTERLIST 23,20 // EDRive? IDs of the each instance. (EDriveX,EDriveU from estart.txt)
+
+#define NFE_INSTANCE_COUNT 2 // the number of NFE media driver instances
+#define NFE_INSTANCE_DRIVE_COUNTS 1,1 // the number of drives in NFE_DRIVELIST for each instance of the driver
+
+// Variant parameters for production NFE media extension driver (same as NFE_DRIVELETTERLIST)
+#define NFE_INSTANCE_UI_DRIVE_ID 23,20 // EDRive? IDs of the each instance. (EDriveX,EDriveU from estart.txt)
+
+
+
#endif
--- a/emulator/emulatorbsp/specific/property.cpp Mon May 03 13:33:44 2010 +0300
+++ b/emulator/emulatorbsp/specific/property.cpp Fri May 14 16:58:21 2010 +0300
@@ -435,6 +435,16 @@
}
+ // Get the name of the extension media drivers from epoc.ini (optional)
+ value = NULL;
+ iProperties.GetString("MediaExtensionDriver", value);
+ if (value)
+ {
+ if (iProperties.Append("Extension", value) == NULL)
+ return KErrNoMemory;
+ }
+
+
// load additional configuration specific properties
// get the multi property "configuration"
--- a/emulator/emulatorbsp/test/bld.inf Mon May 03 13:33:44 2010 +0300
+++ b/emulator/emulatorbsp/test/bld.inf Fri May 14 16:58:21 2010 +0300
@@ -20,6 +20,8 @@
PRJ_EXPORTS
PRJ_MMPFILES
+mediaext/d_nfe.mmp
+//nfe_med_ext/nfe_med_ext.mmp
PRJ_TESTMMPFILES
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emulator/emulatorbsp/test/mediaext/d_nfe.mmp Fri May 14 16:58:21 2010 +0300
@@ -0,0 +1,56 @@
+// Copyright (c) 1995-2009 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:
+// e32test\group\d_nfe.mmp
+//
+//
+
+/**
+@file
+
+@SYMPurpose medtestnfe.pdd NFE test Media Driver
+*/
+
+#include "../variant.mmh"
+
+target VariantTarget(medtestnfe,pdd)
+
+targettype pdd
+
+#include "kernel/kern_ext.mmh"
+#include "drivers/elocd.mmh"
+
+//macro COMPOSITE_DRIVES
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+// point to variantmediadef.h
+SYMBIAN_BASE_SYSTEMINCLUDE(wins)
+
+sourcepath ../../../../../kernelhwsrv/kerneltest/e32test/mediaext
+source d_nfe.cpp
+library elocd.lib
+
+start wins
+win32_headers
+end
+
+epocallowdlldata
+
+uid 0x100039d0 0xA000E7C5
+VENDORID 0x70000001
+capability all
+
+
+
+SMPSAFE
--- a/naviengine/navienginebsp/ne1_tb/test/timestamp/d_timestamp.cpp Mon May 03 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-/*
-* 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 "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:
-*
-*/
-
-
-#include <kern_priv.h>
-#include <kernel.h>
-#include "d_timestamp.h"
-#include "d_timestamp_dev.h"
-#include "ne1_tb_power.h"
-
-// Name for PDD, will be LDD name and this suffix
-_LIT(KTimestampPddSuffix,".NE1_TB");
-
-
-class DNE1_TimestampTestPddChannel : public DTimestampTestPddChannel
- {
-public:
- // Inherited from DTimestampTestPddChanel. These called by the LDD.
- virtual void StartLPMEntryCheck();
- virtual TBool EndLPMEntryCheck();
- virtual void TestConfig(STimestampTestConfig& aInfo);
-private:
- TUint iInitialIdleCount;
- };
-
-/**
- Logical Device (factory class) for DNE1_TimestampTestPddChannel
-*/
-class DNE1_TimestampTestPddFactory : public DPhysicalDevice
- {
-public:
- DNE1_TimestampTestPddFactory();
- // Inherited from DLogicalDevice
- virtual TInt Install();
- virtual void GetCaps(TDes8& aDes) const;
- virtual TInt Create(DBase*& aChannel, TInt aUnit, const TDesC8* aInfo, const TVersion& aVer);
- virtual TInt Validate(TInt aUnit, const TDesC8* aInfo, const TVersion& aVer);
-private:
- TVersion iVersion;
- };
-
-//
-// DNE1_TimestampTestPddFactory
-//
-
-/**
- Standard export function for PDDs. This creates a DPhysicalDevice derived object,
- in this case, our DNE1_TimestampTestPddFactory
-*/
-DECLARE_STANDARD_PDD()
- {
- return new DNE1_TimestampTestPddFactory();
- }
-
-/**
- * constructor
- */
-DNE1_TimestampTestPddFactory::DNE1_TimestampTestPddFactory()
- {
- // Set version number for this device
- iVersion=RTimestampTest::VersionRequired();
- }
-
-/**
- Second stage constructor for DPhysicalDevice derived objects.
- This must at least set a name for the driver object.
-
- @return KErrNone or standard error code.
-*/
-TInt DNE1_TimestampTestPddFactory::Install()
- {
- TName name(RTimestampTest::Name());
- name.Append(KTimestampPddSuffix);
- return SetName(&name);
- }
-
-/**
- Returns the drivers capabilities. This is not used by the Symbian OS device driver framework
- but may be useful for the LDD to use.
-
- @param aDes Descriptor to write capabilities information into
-*/
-void DNE1_TimestampTestPddFactory::GetCaps(TDes8& aDes) const
- {
- // Create a capabilities object
- RTimestampTest::TCaps caps;
- caps.iVersion = iVersion;
- // Write it back to user memory
- Kern::InfoCopy(aDes,(TUint8*)&caps,sizeof(caps));
- }
-
-/**
- Called by the kernel's device driver framework to create a Physical Channel.
- This is called in the context of the user thread (client) which requested the creation of a Logical Channel
- (E.g. through a call to RBusLogicalChannel::DoCreate)
- The thread is in a critical section.
-
- @param aChannel Set to point to the created Physical Channel
- @param aUnit The unit argument supplied by the client to RBusLogicalChannel::DoCreate
- @param aInfo The info argument supplied by the client to RBusLogicalChannel::DoCreate
- @param aVer The version number of the Logical Channel which will use this Physical Channel
-
- @return KErrNone or standard error code.
-*/
-TInt DNE1_TimestampTestPddFactory::Create(DBase*& aChannel, TInt aUnit, const TDesC8* aInfo, const TVersion& aVer)
- {
- // Ignore the parameters we aren't interested in...
- (void)aUnit;
- (void)aInfo;
- (void)aVer;
-
- // Create a new physical channel
- DNE1_TimestampTestPddChannel* channel=new DNE1_TimestampTestPddChannel;
- aChannel = channel;
- return (channel) ? KErrNone : KErrNoMemory;
- }
-
-/**
- Called by the kernel's device driver framework to check if this PDD is suitable for use with a Logical Channel.
- This is called in the context of the user thread (client) which requested the creation of a Logical Channel
- (E.g. through a call to RBusLogicalChannel::DoCreate)
- The thread is in a critical section.
-
- @param aUnit The unit argument supplied by the client to RBusLogicalChannel::DoCreate
- @param aInfo The info argument supplied by the client to RBusLogicalChannel::DoCreate
- @param aVer The version number of the Logical Channel which will use this Physical Channel
-
- @return KErrNone or standard error code.
-*/
-TInt DNE1_TimestampTestPddFactory::Validate(TInt aUnit, const TDesC8* aInfo, const TVersion& aVer)
- {
- // Check version numbers
- if (!Kern::QueryVersionSupported(iVersion,aVer))
- return KErrNotSupported;
-
- (void)aInfo;
- (void) aUnit;
- return KErrNone;
- }
-
-////
-// Channel implementation
-
-
-/**
- Called before each cycle in the test. Takes a copy of current idle count in power controller
-*/
-void DNE1_TimestampTestPddChannel::StartLPMEntryCheck()
- {
- iInitialIdleCount = TNE1_TBPowerController::IdleCount();
- }
-
-/**
- Called at the end of each cycle. Should return true if we have entered idle since call to
- StartLPMEntryCheck. This will be the case if the idle count has changed
-*/
-TBool DNE1_TimestampTestPddChannel::EndLPMEntryCheck()
- {
- return (iInitialIdleCount!=TNE1_TBPowerController::IdleCount());
- }
-
-
-/**
- Called to allow baseport to override test parameters. For Navi defaults are fine
-*/
-void DNE1_TimestampTestPddChannel::TestConfig(STimestampTestConfig& aInfo)
- {
- }
--- a/stvariants/montblanc/src/soc/core/genepi/test/t_genepi_st_08/src/t_genepi_st_08.cpp Mon May 03 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "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:
-*
-*/
-/*****************************************************************************/
-/**
-* © ST-Ericsson, 2009 - All rights reserved
-* Reproduction and Communication of this document is strictly prohibited
-* unless specifically authorized in writing by ST-Ericsson
-*
-* File Name:t_genepi_st_08.cpp Test application file
-* author ST-Ericsson
-*/
-/*****************************************************************************/
-
-/****************************************************************************
- * Includes
- ****************************************************************************/
-#include "t_genepi_st_08blocks.h"
-
-/****************************************************************************
-FUNCTION : MainL
-PURPOSE : Genepi driver tests
- *****************************************************************************/
-LOCAL_C void MainL()
-{
- Ct_genepi_st_08blocks* gTest = Ct_genepi_st_08blocks::NewL( );
- CleanupStack::PushL( gTest );
- gTest->RunAllTest05();
- CleanupStack::Pop();
-}
-
-/****************************************************************************
-FUNCTION : E32Main
-PURPOSE : Entry routine for the Test program
- *****************************************************************************/
-
-GLDEF_C TInt E32Main()
- /**
- * @return - Standard Epoc error code on exit
- */
-{
- CTrapCleanup* cleanup = CTrapCleanup::New();
- if(cleanup == NULL)
- {
- return KErrNoMemory;
- }
- TRAP_IGNORE(MainL());
- delete cleanup;
- return KErrNone;
-}
-
--- a/stvariants/montblanc/src/soc/core/genepi/test/t_genepi_st_08/src/t_genepi_st_08blocks.cpp Mon May 03 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "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:
-*
-*/
-/*****************************************************************************/
-/**
-* © ST-Ericsson, 2009 - All rights reserved
-* Reproduction and Communication of this document is strictly prohibited
-* unless specifically authorized in writing by ST-Ericsson
-*
-* File Name:t_genepi_st_08blocks.cpp Test application file
-* author ST-Ericsson
-*/
-/*****************************************************************************/
-
-/****************************************************************************
- * Includes
- ****************************************************************************/
-#include "t_genepi_st_08blocks.h"
-#include <e32test.h>
-
-// -----------------------------------------------------------------------------
-// Ct_genepi_st_08blocks::Ct_genepi_st_08blocks
-// C++ default constructor
-// -----------------------------------------------------------------------------
-//
-Ct_genepi_st_08blocks::Ct_genepi_st_08blocks( ) : iRTestgenepi(_L("t_genepi_st_08"))
-{
-}
-
-// -----------------------------------------------------------------------------
-// Ct_genepi_st_08blocks::~Ct_genepi_st_08blocks
-// C++ default destructor
-// -----------------------------------------------------------------------------
-//
-Ct_genepi_st_08blocks::~Ct_genepi_st_08blocks( )
-{
-}
-
-// -----------------------------------------------------------------------------
-// Ct_genepi_st_08blocks::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-Ct_genepi_st_08blocks* Ct_genepi_st_08blocks::NewL()
-{
- Ct_genepi_st_08blocks* self = new (ELeave) Ct_genepi_st_08blocks( );
- return self;
-}
-
-// -----------------------------------------------------------------------------
-// Ct_genepi_st_08blocks::RunAllTest05
-// Run all tests in sequence
-// -----------------------------------------------------------------------------
-//
-void Ct_genepi_st_08blocks::RunAllTest05()
-{
- TInt ret = KErrNone;
-
- iRTestgenepi.Start(_L("Testing Genepi Driver"));
- Printf(0, _L("t_genepi_st_08"), _L("Executing Test Class ID: t_genepi_st_08.\n"));
-
- iRTestgenepi.Next(_L("Test Case no. t_genepi_st_08_01 Started"));
- ret = t_genepi_core_08_01();
- iRTestgenepi(ret == KErrNone);
- Printf(0, _L("t_genepi_st_08"), _L("Test Case no. t_genepi_st_08_01 Completed\n"));
-
-
- Printf(0, _L("t_genepi_st_08"), _L("Ending test.\n"));
- iRTestgenepi.End();
- iRTestgenepi.Close();
-}
-
-
-void Ct_genepi_st_08blocks::Printf( const TInt aPriority,
- const TDesC& aDefinition,
- TRefByValue<const TDesC> aFmt,... )
-{
- VA_LIST list;
- VA_START(list,aFmt);
- TName aBuf;
-
- // Parse parameters
- aBuf.AppendFormatList(aFmt,list);
-
- iRTestgenepi.Printf(aBuf);
-}
-
-
--- a/stvariants/montblanc/src/soc/peripheral/mmc/8500ed/mmc/emmcptn.cpp Mon May 03 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,748 +0,0 @@
-// Copyright (c) 2009 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:
-// Partition Management for Embedded MMC devices
-//
-//
-
-#include "emmcptn.h"
-
-#define ST_FLASHER
-#define BGAHSMMC_PI_STR_SIZE sizeof( BGAHSMMC_PI_STR )
-
-//- Constants ---------------------------------------------------------------
-
-const TUint8 KMaxNbrOfTocItems = 16; //condition false in decode partition info function 32; //should be 16 (32*16=512)
-const TUint8 KXMaxNbrOfTocItems = 16;
-const TUint32 KEndOfToc = 0xFFFFFFFFUL;
-const TInt KMaxItemNameLen = 12;
-
-const TUint32 KMegaByte = 1024 * 1024;
-const TUint32 KEraseStepSize = 4 * KMegaByte;
-
-// for Emmc(S) min erase is 256KB for Emmc(T) min erase is 512KB
-const TUint32 KEraseMinSize = 512 * 1024;
-const TInt KDiskSectorSize =512;
-const TInt KDiskSectorShift =9;
-
-// UnistoreII definitions
-#define VOLNUM 0
-#define SECTOR_SIZE 512
-#define TWO_SECTOR_SIZE 1024
-
-struct STocItem
- {
- TUint32 iByteStartAddress;
- TUint32 iByteSize;
- TUint32 iFlags;
- TUint32 iAlign;
- TUint32 iLoadAddress;
- TText8 iFileName[KMaxItemNameLen];
- };
-
-
-class Toc
- {
- public:
- TInt Init();
- TInt GetItem(const TText8* aItemName, STocItem& aItem);
- TInt GetItemEx(const TText8* aName, STocItem& aItem);
- public:
- STocItem iTOC[KMaxNbrOfTocItems];
- STocItem iEmmcPartitionTable[4];
- TUint32 iTocStartSector;
- TUint64 iUserAreaInBytes;
- TInt iPartitionCount;
- TBool iEMMCPtnUpdate;
-
-#if defined(_VERSION_INFO)
- TUint32 iVersionInfoItems;
- TVersionInfoItem iVersionInfo[KMaxSectionItems];
-#endif
-
- private:
- TInt GetItemX(const TText8* aItemName, STocItem& aItem);
-
- };
-
-
-class DLegacyEMMCPartitionInfo : public DEMMCPartitionInfo
- {
-public:
- DLegacyEMMCPartitionInfo();
- ~DLegacyEMMCPartitionInfo();
- Toc *iTocPtr;
-
-
-public:
- virtual TInt Initialise(DMediaDriver* aDriver);
- virtual TInt PartitionInfo(TPartitionInfo& anInfo, const TMMCCallBack& aCallBack);
- virtual TInt PartitionCaps(TLocDrv& aDrive, TDes8& aInfo);
-
-protected:
- void SetPartitionEntry(TPartitionEntry* aEntry, TUint aFirstSector, TUint aNumSectors);
-
-private:
- static void SessionEndCallBack(TAny* aSelf);
- void DoSessionEndCallBack();
- virtual TInt DecodePartitionInfo();
-
-protected:
- DMediaDriver* iDriver;
- TPartitionInfo* iPartitionInfo;
- TMMCCallBack iSessionEndCallBack;
- TMMCCallBack iCallBack; // Where to report the PartitionInfo completion
- DMMCSession* iSession;
- TMMCard* iCard;
- TUint8* iIntBuf;
- };
-
-DLegacyEMMCPartitionInfo::DLegacyEMMCPartitionInfo()
- : iSessionEndCallBack(DLegacyEMMCPartitionInfo::SessionEndCallBack, this)
- {
- }
-
-DLegacyEMMCPartitionInfo::~DLegacyEMMCPartitionInfo()
- {
- delete iSession;
- }
-
-TInt DLegacyEMMCPartitionInfo::Initialise(DMediaDriver* aDriver)
- {
- iDriver = aDriver;
-
- DMMCSocket* socket = ((DMMCSocket*)((DPBusPrimaryMedia*)(iDriver->iPrimaryMedia))->iSocket);
- if(socket == NULL)
- return(KErrNoMemory);
-
- DMMCStack* stack = socket->Stack(0);
- iCard = stack->CardP(((DPBusPrimaryMedia*)(iDriver->iPrimaryMedia))->iSlotNumber);
-
- iSession = stack->AllocSession(iSessionEndCallBack);
- if (iSession == NULL)
- return(KErrNoMemory);
-
- iSession->SetStack(stack);
- iSession->SetCard(iCard);
-
- // this gets used before any access
- TInt bufLen, minorBufLen;
- stack->BufferInfo(iIntBuf, bufLen, minorBufLen);
-
- return(KErrNone);
- }
-
-TInt DLegacyEMMCPartitionInfo::PartitionInfo(TPartitionInfo& anInfo, const TMMCCallBack& aCallBack)
- {
- iPartitionInfo = &anInfo;
- iCallBack = aCallBack;
- // If media driver is persistent (see EMediaDriverPersistent),
- // the card may have changed since last power down, so reset CID
- iSession->SetCard(iCard);
-
- TUint32 TocOffset =0; //TOC is on first Block
-
-#ifndef ST_FLASHER
- TocOffset = 1280; //TOC mapped 0x000A0000 bytes offset i.e. 1280 blocks
-#endif //!ST_FLASHER
-
- iSession->SetupCIMReadBlock(TocOffset, iIntBuf); // aBlocks = 1
-
- TInt r = iDriver->InCritical();
- if (r == KErrNone)
- r = iSession->Engage();
-
- if(r != KErrNone)
- iDriver->EndInCritical();
-
- return(r);
- }
-
-TInt DLegacyEMMCPartitionInfo::PartitionCaps(TLocDrv& aDrive, TDes8& aInfo)
- {
- TLocalDriveCapsV6Buf& Info = static_cast< TLocalDriveCapsV6Buf&> (aInfo);
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>iPartitionType=%d",aDrive.iPartitionType));
-
-
- if (aDrive.iPartitionType == KPartitionTypeRofs)
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf("eMMC proto: Caps for ROFS,drive NO =%d",aDrive.iDriveNumber));
-
- Info().iType = EMediaHardDisk;
- Info().iDriveAtt = KDriveAttLocal | KDriveAttInternal;
- Info().iFileSystemId = KDriveFileSysROFS;
- Info().iPartitionType = KPartitionTypeRofs;
- Info().iMediaAtt |= KMediaAttWriteProtected;
- Info().iSize = TUint32(iTocPtr->iEmmcPartitionTable[1].iByteSize);
-
- }
- else if (aDrive.iPartitionType == KPartitionTypeEmpty) //for CoreOS
- {
-
- __KTRACE_OPT(KPBUSDRV,Kern::Printf("eMMC proto: Caps for EmptyP,drive NO =%d",aDrive.iDriveNumber));
-
- Info().iType = EMediaHardDisk;
- Info().iDriveAtt = KDriveAttLocal | KDriveAttInternal;
- Info().iFileSystemId = KDriveFileNone;
- Info().iPartitionType = KPartitionTypeEmpty;
- Info().iMediaAtt |= KMediaAttWriteProtected;
- Info().iSize = iTocPtr->iEmmcPartitionTable[0].iByteSize;
-
- }
-
- else if((aDrive.iDriveNumber == 2) && (!iTocPtr->iEMMCPtnUpdate))
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf("eMMC proto: Caps iDriveNumber =%d",aDrive.iDriveNumber));
-
-
- Info().iType = EMediaHardDisk;
- Info().iDriveAtt |= KDriveAttLocal | KDriveAttInternal ;
-
- Info().iFileSystemId = KDriveFileSysFAT;
- Info().iPartitionType = KPartitionTypeWin95FAT32;
- Info().iMediaAtt |= KMediaAttFormattable;
- Info().iSize = TUint64(iTocPtr->iUserAreaInBytes);
- }
-
- // is this query for the swap partition ?
- if (aDrive.iPartitionType == KPartitionTypePagedData)
- {
- Info().iFileSystemId = KDriveFileNone;
- Info().iDriveAtt|= KDriveAttHidden;
- }
-
- // is this query for the ROFS partition ?
- if (aDrive.iPartitionType == KPartitionTypeRofs)
- {
- Info().iFileSystemId = KDriveFileSysROFS;
- Info().iMediaAtt&= ~KMediaAttFormattable;
- Info().iMediaAtt|= KMediaAttWriteProtected;
- }
-
- // is this query for the ROM partition ?
- if (aDrive.iPartitionType == KPartitionTypeROM)
- {
- Info().iFileSystemId = KDriveFileNone;
- Info().iMediaAtt&= ~KMediaAttFormattable;
- Info().iMediaAtt|= KMediaAttWriteProtected;
- }
-
- return KErrNone;
- }
-
-void DLegacyEMMCPartitionInfo::SessionEndCallBack(TAny* aSelf)
- {
- DLegacyEMMCPartitionInfo& self = *static_cast<DLegacyEMMCPartitionInfo*>(aSelf);
- self.DoSessionEndCallBack();
- }
-
-void DLegacyEMMCPartitionInfo::DoSessionEndCallBack()
- {
- iDriver->EndInCritical();
-
- TInt r = iSession->EpocErrorCode();
-
- if (r == KErrNone)
- r = DecodePartitionInfo();
-
- iDriver->PartitionInfoComplete(r == KErrNone ? r : KErrNotReady);
- }
-
-TInt DLegacyEMMCPartitionInfo::DecodePartitionInfo()
-//
-// decode partition info that was read into internal buffer
-//
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>emcptn:DecodePartitionInfo"));
-
- TUint partitionCount=iPartitionInfo->iPartitionCount=0;
- TInt defaultPartitionNumber=-1;
- TMBRPartitionEntry* pe;
- const TUint KMBRFirstPartitionOffsetAligned = KMBRFirstPartitionOffset & ~3;
- TInt i;
- iTocPtr = reinterpret_cast<Toc*>(iIntBuf);
- iTocPtr->iEMMCPtnUpdate = EFalse;
- iTocPtr->iPartitionCount = 0;
-
- STocItem item;
-
-#ifdef ST_FLASHER
- for (TUint8 nCnt = 0; nCnt < 5; nCnt++)
-#else
- for (TUint8 nCnt = 0; nCnt < KMaxNbrOfTocItems; nCnt++)
-#endif //ST_FLASHER
- {
-
-#ifdef ST_FLASHER
- if((iTocPtr->GetItemEx((TText8*)"NORMAL", item) == KErrNone) ||(iTocPtr->GetItemEx((TText8*)"X-LOADER", item)== KErrNone))
-#else
- if(iTocPtr->GetItemEx("SOS+CORE", item)== KErrNone)
-#endif //ST_FLASHER
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>Valid TOC/PIB found"));
- }
- else
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf("ERROR eMMC proto: No Valid TOC/PIB structure !"));
- iTocPtr->iEMMCPtnUpdate = ETrue;
- }
- }
-
- if(iTocPtr)
- {
- if(!iTocPtr->iEMMCPtnUpdate)
- {
-
- TInt ret = KErrNone;
-
- //SOS+CORE/NORMAL=0,SOS+ROFS1=1,SOS+ROFS2=2,SOS-USER/PRODUCTION=3
-
-#ifdef ST_FLASHER
-
-
-
- ret = iTocPtr->GetItemEx((TText8*)"NORMAL", item);
-#else
- ret = iTocPtr->GetItemEx("SOS+CORE", item);
-#endif //ST_FLASHER
-
- if(ret == KErrNone)
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>SOS+CORE/NORMAL partition found"));
- //SOS+CORE Partition
- iTocPtr->iEmmcPartitionTable[0] = item;
- }
- else
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>ERROR SOS+CORE/NORMAL partition NOT found"));
- }
-
- //In ST flasher ROFS partitions are not define
-#ifndef ST_FLASHER
- ret = iTocPtr->GetItemEx("SOS+ROFS1", item);
- if(ret == KErrNone)
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>SOS+ROFS1 partition found"));
- //Rofs Partition
- iTocPtr->iEmmcPartitionTable[1] = item;
- }
- else
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>ERROR SOS+ROFS1 partition NOT found"));
- }
-
- // In ST flasher consider : Normal -> coreos, ADL -> Rofs, No Rofs_Ext,Production -> User
-
- ret = iTocPtr->GetItemEx("SOS+ROFS2", item);
- if(ret == KErrNone)
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>SOS+ROFS2 partition found"));
- //ROFX Partition
- iTocPtr->iEmmcPartitionTable[2] = item;
- }
- else
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>ERROR SOS+ROFS2 partition NOT found"));
- }
-#endif //ST_FLASHER
-
-#ifdef ST_FLASHER
- //USER partition is => Start address of PRODUCTION + Size of PRODUCTION
- ret = iTocPtr->GetItemEx((TText8*)"PRODUCTION", item);
-#else
- ret = iTocPtr->GetItemEx("SOS-USER", item);
-#endif //ST_FLASHER
- if(ret == KErrNone)
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>SOS-USER partition found"));
- //SOS-USER Partition
- iTocPtr->iEmmcPartitionTable[3] = item;
-#ifdef ST_FLASHER
- TUint64 NoOfBlock512KAlign = (iTocPtr->iEmmcPartitionTable[3].iByteStartAddress + iTocPtr->iEmmcPartitionTable[3].iByteSize)/(KEraseMinSize);
- iTocPtr->iEmmcPartitionTable[3].iByteStartAddress = (NoOfBlock512KAlign * KEraseMinSize) + KEraseStepSize;//align with 512KB + extra 4MB
- iTocPtr->iUserAreaInBytes = (iCard->DeviceSize64() - ((TUint64)(iTocPtr->iEmmcPartitionTable[3].iByteStartAddress)));
-#else //ST_FLASHER
- iTocPtr->iEmmcPartitionTable[3].iByteStartAddress = iTocPtr->iEmmcPartitionTable[3].iByteStartAddress;
- iTocPtr->iUserAreaInBytes = iTocPtr->iEmmcPartitionTable[3].iByteSize;
-#endif //ST_FLASHER
- }
- else //search MEM_INIT partition
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>ERROR SOS-USER partition NOT found search for MEM_INIT"));
- //USER partition is => Start address of MEM_INIT + Size of MEM_INIT
- ret = iTocPtr->GetItemEx((TText8*)"MEM_INIT", item);
- if(ret == KErrNone)
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>MEM_INIT partition found"));
- //SOS-USER Partition
- iTocPtr->iEmmcPartitionTable[3] = item;
- TUint64 NoOfBlock512KAlign = (iTocPtr->iEmmcPartitionTable[3].iByteStartAddress + iTocPtr->iEmmcPartitionTable[3].iByteSize)/(KEraseMinSize);
- iTocPtr->iEmmcPartitionTable[3].iByteStartAddress = (NoOfBlock512KAlign * KEraseMinSize) + KEraseStepSize;//align with 512KB + extra 4MB
- iTocPtr->iUserAreaInBytes = (iCard->DeviceSize64() - ((TUint64)(iTocPtr->iEmmcPartitionTable[3].iByteStartAddress)));
- }
- else
- {
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>ERROR MEM_INIT partition NOT found"));
- }
- }
-
-
- // User Partition : iPartitionCount =0
- iPartitionInfo->iEntry[iTocPtr->iPartitionCount].iPartitionBaseAddr = iTocPtr->iEmmcPartitionTable[3].iByteStartAddress;
- //iTocPtr->iUserAreaInBytes = iTocPtr->iUserAreaInBytes - (TUint64)(KEraseStepSize - KDiskSectorSize);// (0x3ffe00)
- iPartitionInfo->iEntry[iTocPtr->iPartitionCount].iPartitionLen = iTocPtr->iUserAreaInBytes;
-
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>iTocPtr->iEmmcPartitionTable[3].iByteSize=0x%x",iTocPtr->iUserAreaInBytes));
-
- SetPartitionEntry( &iPartitionInfo->iEntry[iTocPtr->iPartitionCount], iTocPtr->iEmmcPartitionTable[3].iByteStartAddress/KDiskSectorSize, iTocPtr->iUserAreaInBytes/(TUint64)(KDiskSectorSize ));
- iPartitionInfo->iEntry[iTocPtr->iPartitionCount].iPartitionType = KPartitionTypeFAT16;
- iTocPtr->iPartitionCount++;
-
- // CoreOs Partition : iPartitionCount =1
- iPartitionInfo->iEntry[iTocPtr->iPartitionCount].iPartitionBaseAddr = iTocPtr->iEmmcPartitionTable[0].iByteStartAddress;
- iPartitionInfo->iEntry[iTocPtr->iPartitionCount].iPartitionLen = iTocPtr->iEmmcPartitionTable[0].iByteSize;
-
- SetPartitionEntry( &iPartitionInfo->iEntry[iTocPtr->iPartitionCount], iTocPtr->iEmmcPartitionTable[0].iByteStartAddress/KDiskSectorSize, iTocPtr->iEmmcPartitionTable[0].iByteSize/KDiskSectorSize );
- iPartitionInfo->iEntry[iTocPtr->iPartitionCount].iPartitionType = KPartitionTypeROM;//KPartitionTypeEmpty indar
- iTocPtr->iPartitionCount ++;
- }
-
- }
-
- __KTRACE_OPT(KPBUSDRV,Kern::Printf(">>partitionCount=%d",iTocPtr->iPartitionCount));
-
- partitionCount=iTocPtr->iPartitionCount;
-
- // Read of the first sector successful so check for a Master Boot Record
- if (*(TUint16*)(&iIntBuf[KMBRSignatureOffset])!=0xAA55)
- // If no valid signature give up now, No way to re-format an internal drive correctly
- {
- __KTRACE_OPT(KPBUSDRV, Kern::Printf("mmc:No MBR Found"));
- // return KErrCorrupt;
- }
-
-
- __ASSERT_COMPILE(KMBRFirstPartitionOffsetAligned + KMBRMaxPrimaryPartitions * sizeof(TMBRPartitionEntry) <= KMBRSignatureOffset);
-
- memmove(&iIntBuf[0], &iIntBuf[2],
- KMBRFirstPartitionOffsetAligned + KMBRMaxPrimaryPartitions * sizeof(TMBRPartitionEntry));
-
-
- for (i=0, pe = (TMBRPartitionEntry*)(&iIntBuf[KMBRFirstPartitionOffsetAligned]);
- pe->iPartitionType != 0 && i < KMaxPartitionEntries; i++,pe--)
- {
- if (pe->IsDefaultBootPartition())
- {
- SetPartitionEntry(&iPartitionInfo->iEntry[0],pe->iFirstSector,pe->iNumSectors);
- defaultPartitionNumber=i;
- partitionCount++;
- break;
- }
- }
-
- // Now add any other partitions
- for (i=0, pe = (TMBRPartitionEntry*)(&iIntBuf[KMBRFirstPartitionOffsetAligned]);
- pe->iPartitionType != 0 && i < KMaxPartitionEntries; i++,pe--)
- {
- if (defaultPartitionNumber==i)
- {
- // Already sorted
- }
-
- // FAT partition ?
- else if (pe->IsValidDosPartition() || pe->IsValidFAT32Partition())
- {
- SetPartitionEntry(&iPartitionInfo->iEntry[partitionCount],pe->iFirstSector,pe->iNumSectors);
- __KTRACE_OPT(KLOCDPAGING, Kern::Printf("Mmc: FAT partition found at sector #%u", pe->iFirstSector));
- partitionCount++;
- }
-
- else if (pe->iPartitionType == KPartitionTypeROM)
- {
- TPartitionEntry& partitionEntry = iPartitionInfo->iEntry[partitionCount];
- SetPartitionEntry(&iPartitionInfo->iEntry[partitionCount],pe->iFirstSector,pe->iNumSectors);
- partitionEntry.iPartitionType = pe->iPartitionType;
- partitionCount++;
-
- __KTRACE_OPT(KLOCDPAGING, Kern::Printf("Mmc: KPartitionTypeROM found at sector #%u", pe->iFirstSector));
- }
-
- // ROFS partition ?
- else if (pe->iPartitionType == KPartitionTypeRofs)
- {
-
-// Don't expose this for normal operation only boot?
- TPartitionEntry& partitionEntry = iPartitionInfo->iEntry[partitionCount];
- SetPartitionEntry(&iPartitionInfo->iEntry[partitionCount],pe->iFirstSector,pe->iNumSectors);
- partitionEntry.iPartitionType = pe->iPartitionType;
- __KTRACE_OPT(KLOCDPAGING, Kern::Printf("Mmc: KPartitionTypeRofs found at sector #%u", pe->iFirstSector));
- partitionCount++;
- }
-
- // Swap partition ?
- else if (pe->iPartitionType == KPartitionTypePagedData)
- {
- __KTRACE_OPT(KLOCDPAGING, Kern::Printf("Mmc: KPartitionTypePagedData found at sector #%u", pe->iFirstSector));
-
- TPartitionEntry& partitionEntry = iPartitionInfo->iEntry[partitionCount];
- SetPartitionEntry(&iPartitionInfo->iEntry[partitionCount],pe->iFirstSector,pe->iNumSectors);
- partitionEntry.iPartitionType = pe->iPartitionType;
- partitionCount++;
- }
- }
-
- // Check the validity of the partition address boundaries
- // If there is any MBR errors
- if(partitionCount > 0)
- {
- const TInt64 deviceSize = iCard->DeviceSize64();
- TPartitionEntry& part = iPartitionInfo->iEntry[partitionCount - 1];
- // Check that the card address space boundary is not exceeded by the last partition
- if(part.iPartitionBaseAddr + part.iPartitionLen > deviceSize)
- {
- __KTRACE_OPT(KPBUSDRV, Kern::Printf("Mmc: MBR partition exceeds card memory space"));
- return KErrCorrupt;
- }
-
- // More than one partition. Go through all of them
- if (partitionCount > 0)
- {
- for(i=partitionCount-1; i>0; i--)
- {
- const TPartitionEntry& curr = iPartitionInfo->iEntry[i];
- TPartitionEntry& prev = iPartitionInfo->iEntry[i-1];
- // Check if partitions overlap
- if(curr.iPartitionBaseAddr < (prev.iPartitionBaseAddr + prev.iPartitionLen))
- {
- __KTRACE_OPT(KPBUSDRV, Kern::Printf("Mmc: Overlapping partitions"));
- //return KErrCorrupt;
- }
- }
- }
- }
-
- if (defaultPartitionNumber==(-1) && partitionCount==0)
- {
- __KTRACE_OPT(KPBUSDRV, Kern::Printf("No Valid Partitions Found!"));
- return KErrCorrupt;
- }
-
-
- iPartitionInfo->iPartitionCount=partitionCount;
- iPartitionInfo->iMediaSizeInBytes=iCard->DeviceSize64();
-
-#ifdef _DEBUG
- __KTRACE_OPT(KPBUSDRV, Kern::Printf("<Mmc:PartitionInfo (C:%d)",partitionCount));
- for (TUint x=0; x<partitionCount; x++)
- __KTRACE_OPT(KPBUSDRV, Kern::Printf(" Partition%d (B:%xH L:%xH)",x,I64LOW(iPartitionInfo->iEntry[x].iPartitionBaseAddr),I64LOW(iPartitionInfo->iEntry[x].iPartitionLen)));
-#endif
-
-
- //Notify medmmc that partitioninfo is complete.
- iCallBack.CallBack();
-
- return(KErrNone);
- }
-
-
-void DLegacyEMMCPartitionInfo::SetPartitionEntry(TPartitionEntry* aEntry, TUint aFirstSector, TUint aNumSectors)
-//
-// auxiliary static function to record partition information in TPartitionEntry object
-//
- {
- aEntry->iPartitionBaseAddr=aFirstSector;
- aEntry->iPartitionBaseAddr<<=KDiskSectorShift;
- aEntry->iPartitionLen=aNumSectors;
- aEntry->iPartitionLen<<=KDiskSectorShift;
- aEntry->iPartitionType=KPartitionTypeFAT12;
- }
-
-// End - DLegacyEMMCPartitionInfo
-
-
-EXPORT_C DEMMCPartitionInfo* CreateEmmcPartitionInfo()
- {
- return new DLegacyEMMCPartitionInfo;
- }
-
-DECLARE_STANDARD_EXTENSION()
- {
- return KErrNone;
- }
-
-
-
-
-/**************************************************************************
-* TInt Toc::GetItemX(const TText8* aItemName, STocItem& aItem)
-*-----------------------------------------------------------------------
-* Search entry in XLOADER TOC with ItemName.
-* End of TOC limited by amount of entries only
-*-----------------------------------------------------------------------
-* Parameters:
-* TText8 : Item Name
-* STocItem : Reference of Item
-*-----------------------------------------------------------------------
-* Return Value
-* KErrNone : If Item Found other wise return KErrNotFound
-*************************************************************************/
-
-TInt Toc::GetItemX(const TText8* aItemName, STocItem& aItem)
- {
- TUint8 i = 0;
-
- if ( aItemName == NULL )
- {
- return KErrNotFound;
- }
-
- // check all items
- while ( i < KXMaxNbrOfTocItems )
- {
- TUint8 j;
- for ( j = 0; j < KMaxItemNameLen; j++ )
- {
- if ( aItemName[j] == iTOC[i].iFileName[j] )
- {
- if ( aItemName[j] == 0 )
- {
- // item found
- aItem = iTOC[i];
- return KErrNone;
- }
- }
- else
- {
- break;
- }
- }
-
- i++;
- }
-
- return KErrNotFound;
- }
-
-
-/**************************************************************************
-* TInt Toc::GetItem(const TText8* aItemName, STocItem& aItem)
-*-----------------------------------------------------------------------
-* Search entry in TOC with ItemName.
-*-----------------------------------------------------------------------
-* Parameters:
-* TText8 : Item Name
-* STocItem : Reference of Item
-*-----------------------------------------------------------------------
-* Return Value
-* KErrNone : If Item Found other wise return KErrNotFound
-*************************************************************************/
-
-TInt Toc::GetItem(const TText8* aItemName, STocItem& aItem)
- {
- TUint8 i = 0;
-
- if ( aItemName == NULL )
- {
- return KErrNotFound;
- }
-
- // check all items
- while ( i < KMaxNbrOfTocItems && iTOC[i].iByteStartAddress != KEndOfToc )
- {
- TUint8 j;
- for ( j = 0; j < KMaxItemNameLen; j++ )
- {
- if ( aItemName[j] == iTOC[i].iFileName[j] )
- {
- if ( aItemName[j] == 0 )
- {
- // item found
- aItem = iTOC[i];
- aItem.iByteStartAddress += ((TUint32)SECTOR_SIZE) * iTocStartSector;
- return KErrNone;
- }
- }
- else
- {
- break;
- }
- }
-
- i++;
- }
-
- return KErrNotFound;
- }
-
-/**************************************************************************
-* TInt Toc::GetItem(const TText8* aItemName, STocItem& aItem)
-*-----------------------------------------------------------------------
-* Search entry in TOC with aName as part of ItemName.
-*-----------------------------------------------------------------------
-* Parameters:
-* TText8 : Item Name
-* STocItem : Reference of Item
-*-----------------------------------------------------------------------
-* Return Value
-* KErrNone : If Item Found other wise return KErrNotFound
-*************************************************************************/
-
-TInt Toc::GetItemEx(const TText8* aName, STocItem& aItem)
- {
- TInt i = 0;
- TInt l1 =0;
- TInt j , k,l2;
-
- if ( aName == NULL )
- {
- return KErrNotFound;
- }
-
- // calculate length for name to be searched
- while ( i < KMaxItemNameLen && aName[i] != 0 ) { i++; l1++; }
- if ( !l1 ) return KErrGeneral; // zero length
-
- // check all items
- i = 0;
- while ( i < KMaxNbrOfTocItems && iTOC[i].iByteStartAddress != KEndOfToc )
- {
- // calculate length of current item
- j = 0; l2 = 0;
- while ( j < KMaxItemNameLen && iTOC[i].iFileName[j] != 0 ) { j++; l2++; }
- if ( l2 < l1 ) { i++; continue; } // too short name, skip it
-
-
- // compare Item with aName
- for ( j = 0; j <= (l2 - l1); j++ )
- {
- for ( k = 0; k < l1; k++ )
- {
- if ( aName[k] != iTOC[i].iFileName[j+k] ) break;
- }
-
- if ( k == l1 )
- {
- // item found
- aItem = iTOC[i];
- // aItem.iByteStartAddress += ((TUint32)SECTOR_SIZE) * iTocStartSector; //indar check*
- return KErrNone;
- }
- }
-
- i++;
- }
-
- return KErrNotFound;
- }
-// End of File
-
--- a/stvariants/montblanc/src/soc/peripheral/mmc/8500ed/mmc/emmcptn.mmp Mon May 03 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-// Copyright (c) 1998-2009 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:
-// eka/drivers/medmmc/emmcptn.mmp
-//
-//
-#include <8500/variant.mmh>
-target VariantTarget(emmcptn,dll)
-targettype kext
-
-#include "kernel/kern_ext.mmh"
-USERINCLUDE ../../../../../../../../../kernelhwsrv/kernel/eka/include/drivers
-SYMBIAN_BASE_SYSTEMINCLUDE(drivers)
-
-source emmcptn.cpp
-
-library epbusmmc.lib
-
-
-
-library elocd.lib
-deffile ../../../../../../../../../kernelhwsrv/kernel/eka/eabi/emmcptn.def
-
-nostrictdef
-noexportlibrary
-
-uid 0x1000008d 0x20026BFD
-VENDORID 0x70000001
-
-SMPSAFE
-
-start wins
-win32_headers
-end
-
-capability all
-
--- a/stvariants/montblanc/src/soc/peripheral/mmc/8500ed/mmc/epbusm.mmh Mon May 03 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-// Copyright (c) 1998-2009 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:
-// e32\drivers\pbus\mmc\epbusm.mmh
-// Common files for all MMC/SD/CPRM builds
-//
-//
-
-#include "kernel/kern_ext.mmh"
-
-//linkas epbusm.dll
-
-USERINCLUDE ../../../../../../../../../kernelhwsrv/kernel/eka/include
-USERINCLUDE ../../../../../../../../../kernelhwsrv/kernel/eka/drivers/pbus/mmc
-USERINCLUDE ../../../../../../../../../kernelhwsrv/kernel/eka/drivers/pbus/mmc/traces
-SYMBIAN_BASE_SYSTEMINCLUDE(drivers)
-OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-SYMBIAN_BASE_SYSTEMINCLUDE(8500)
-SYMBIAN_BASE_SYSTEMINCLUDE(kernel)
-SYMBIAN_BASE_SYSTEMINCLUDE(internal)
-SYMBIAN_ASSP_SYSTEMINCLUDE(nomadik_8500)
-
-
-sourcepath ..
-source spbus.cpp
-
-sourcepath ../../../../../../../../../kernelhwsrv/kernel/eka/drivers/pbus
-source pbusmedia.cpp
-
-sourcepath ../../../../../../../../../kernelhwsrv/kernel/eka/drivers/pbus/mmc
-source stack.cpp
-source stackbody.cpp
-source session.cpp
-source mmccd_init.cpp
-
-library elocd.lib
-
-start wins
-win32_library kernel32.lib
-end
-
-epocallowdlldata
-
-uid 0x1000008d 0x2002E964
-
-capability all
-
--- a/stvariants/montblanc/src/soc/peripheral/mmc/8500ed/mmc/epbusmmc.mmp Mon May 03 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-// Copyright (c) 1998-2009 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:
-// e32/drivers/pbus/mmc/epbusmmc.mmp
-//
-//
-
-#include <8500/variant.mmh>
-#include "epbusm.mmh"
-
-target VariantTarget(epbusmmc,dll)
-targettype kext
-linkas epbusmmc.lib
-
-//deffile ../../../~/epbusm.def
-
-deffile ../../../../../../../../../kernelhwsrv/kernel/eka/eabi/epbusm.def
-
-library VariantTarget(mmcpwrmgr,lib)
-VENDORID 0x70000001
-
-SMPSAFE
\ No newline at end of file
--- a/stvariants/montblanc/test/symbian/e32/timestamp/d_timestamp.cpp Mon May 03 13:33:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,198 +0,0 @@
-/*
-* 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 "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:
-*
-*/
-
-
-#include <kern_priv.h>
-#include <kernel.h>
-#include "d_timestamp.h"
-#include "d_timestamp_dev.h"
-#include "power_info.h"
-#include "power_config.h"
-
-// Name for PDD, will be LDD name and this suffix
-_LIT(KTimestampPddSuffix,".8500");
-
-
-class D8500_TimestampTestPddChannel : public DTimestampTestPddChannel
- {
-public:
- // Inherited from DTimestampTestPddChanel. These called by the LDD.
- virtual void StartLPMEntryCheck();
- virtual TBool EndLPMEntryCheck();
- virtual void TestConfig(STimestampTestConfig& aInfo);
-private:
- TUint iInitialIdleCount;
- };
-
-/**
- Logical Device (factory class) for D8500_TimestampTestPddChannel
-*/
-class D8500_TimestampTestPddFactory : public DPhysicalDevice
- {
-public:
- D8500_TimestampTestPddFactory();
- // Inherited from DLogicalDevice
- virtual TInt Install();
- virtual void GetCaps(TDes8& aDes) const;
- virtual TInt Create(DBase*& aChannel, TInt aUnit, const TDesC8* aInfo, const TVersion& aVer);
- virtual TInt Validate(TInt aUnit, const TDesC8* aInfo, const TVersion& aVer);
-private:
- TVersion iVersion;
- };
-
-//
-// D8500_TimestampTestPddFactory
-//
-
-/**
- Standard export function for PDDs. This creates a DPhysicalDevice derived object,
- in this case, our D8500_TimestampTestPddFactory
-*/
-DECLARE_STANDARD_PDD()
- {
- return new D8500_TimestampTestPddFactory();
- }
-
-/**
- * constructor
- */
-D8500_TimestampTestPddFactory::D8500_TimestampTestPddFactory()
- {
- // Set version number for this device
- iVersion=RTimestampTest::VersionRequired();
- }
-
-/**
- Second stage constructor for DPhysicalDevice derived objects.
- This must at least set a name for the driver object.
-
- @return KErrNone or standard error code.
-*/
-TInt D8500_TimestampTestPddFactory::Install()
- {
- TName name(RTimestampTest::Name());
- name.Append(KTimestampPddSuffix);
- return SetName(&name);
- }
-
-/**
- Returns the drivers capabilities. This is not used by the Symbian OS device driver framework
- but may be useful for the LDD to use.
-
- @param aDes Descriptor to write capabilities information into
-*/
-void D8500_TimestampTestPddFactory::GetCaps(TDes8& aDes) const
- {
- // Create a capabilities object
- RTimestampTest::TCaps caps;
- caps.iVersion = iVersion;
- // Write it back to user memory
- Kern::InfoCopy(aDes,(TUint8*)&caps,sizeof(caps));
- }
-
-/**
- Called by the kernel's device driver framework to create a Physical Channel.
- This is called in the context of the user thread (client) which requested the creation of a Logical Channel
- (E.g. through a call to RBusLogicalChannel::DoCreate)
- The thread is in a critical section.
-
- @param aChannel Set to point to the created Physical Channel
- @param aUnit The unit argument supplied by the client to RBusLogicalChannel::DoCreate
- @param aInfo The info argument supplied by the client to RBusLogicalChannel::DoCreate
- @param aVer The version number of the Logical Channel which will use this Physical Channel
-
- @return KErrNone or standard error code.
-*/
-TInt D8500_TimestampTestPddFactory::Create(DBase*& aChannel, TInt aUnit, const TDesC8* aInfo, const TVersion& aVer)
- {
- // Ignore the parameters we aren't interested in...
- (void)aUnit;
- (void)aInfo;
- (void)aVer;
-
- // Create a new physical channel
- D8500_TimestampTestPddChannel* channel=new D8500_TimestampTestPddChannel;
- aChannel = channel;
- return (channel) ? KErrNone : KErrNoMemory;
- }
-
-/**
- Called by the kernel's device driver framework to check if this PDD is suitable for use with a Logical Channel.
- This is called in the context of the user thread (client) which requested the creation of a Logical Channel
- (E.g. through a call to RBusLogicalChannel::DoCreate)
- The thread is in a critical section.
-
- @param aUnit The unit argument supplied by the client to RBusLogicalChannel::DoCreate
- @param aInfo The info argument supplied by the client to RBusLogicalChannel::DoCreate
- @param aVer The version number of the Logical Channel which will use this Physical Channel
-
- @return KErrNone or standard error code.
-*/
-TInt D8500_TimestampTestPddFactory::Validate(TInt aUnit, const TDesC8* aInfo, const TVersion& aVer)
- {
- // Check version numbers
- if (!Kern::QueryVersionSupported(iVersion,aVer))
- return KErrNotSupported;
-
- // Ignore extra info, (this could be used for validation purposes) and unit
- (void)aInfo;
- (void) aUnit;
- return KErrNone;
- }
-
-////
-// Channel implementation
-
-
-/**
- Called before each cycle in the test. Takes a copy of current idle count in power controller
-*/
-void D8500_TimestampTestPddChannel::StartLPMEntryCheck()
- {
-#ifdef __SMP__
- iInitialIdleCount = IdleRestoreCount();
-#endif
- }
-
-/**
- Called at the end of each cycle. Should return true if we have entered idle since call to
- StartLPMEntryCheck. This will be the case if the idle count has changed
-*/
-TBool D8500_TimestampTestPddChannel::EndLPMEntryCheck()
- {
- // should only really return true if a low power mode >= WFIITS has been entered.
-#ifdef __SMP__ // we don't care about single core build in this test
- if (DEFAULT_STATE_WFIITS_ENABLE || DEFAULT_STATE_IDLE_ENABLE ||
- DEFAULT_STATE_SLEEP_ENABLE || DEFAULT_STATE_DEEPSLEEP_ENABLE)
- return (iInitialIdleCount!=IdleRestoreCount());
- else
- return ETrue;
-#else
- return ETrue;
-#endif
- }
-
-
-/**
- Called to allow baseport to override test parameters. For Navi defaults are fine
-*/
-void D8500_TimestampTestPddChannel::TestConfig(STimestampTestConfig& aInfo)
- {
- // default test config is fine for HREF
- // accebtable error up to 2%
- aInfo.iErrorPercent = 2;
- }