--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/include/drivers/mmccd_ifc.h Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,229 @@
+// 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\include\drivers\mmccd_ifc.h
+// Factory class for creating platform-specific MMC Drivers
+//
+//
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+#ifndef __MMCCD_IFC_H__
+#define __MMCCD_IFC_H__
+
+#include <drivers/mmc.h>
+#include <drivers/locmedia.h>
+
+
+
+
+/**
+The factory class for creating platform specific MultiMediaCard objects.
+
+The class defines the interface that must be implemented by a derived class.
+*/
+class TMMCardControllerInterface
+ {
+public:
+ IMPORT_C TInt Create();
+
+
+ /**
+ Creates a platform specific socket object.
+
+ The function is called from TMMCardControllerInterface::Create(), and
+ an implementation must be provided by the platform specific layer in
+ the Variant DLL.
+
+ @param aSocketNum The socket number.
+ @param aPasswordStore A pointer to the password store.
+
+ @return A pointer to the new socket object.
+
+ @see Create()
+ */
+ virtual DMMCSocket* NewSocket(TInt aSocketNum, TMMCPasswordStore* aPasswordStore)=0;
+
+
+ /**
+ Creates a platform specific stack object.
+
+ The function is called from TMMCardControllerInterface::Create(), and
+ an implementation must be provided by the platform specific layer in
+ the Variant DLL.
+
+ @param aSocketNum The socket number.
+ @param aSocket A pointer to the socket object.
+
+ @return A pointer to the new stack object.
+
+ @see Create()
+ */
+ virtual DMMCStack* NewStack(TInt aSocketNum, DMMCSocket* aSocket)=0;
+
+
+ /**
+ Creates a platform specific media change object.
+
+ The function is called from TMMCardControllerInterface::Create(), and
+ an implementation must be provided by the platform specific layer in
+ the Variant DLL.
+
+ @param aMcId The media change number.
+
+ @return A pointer to the new media change object.
+
+ @see Create()
+ @see MediaChangeID()
+ */
+ virtual DMMCMediaChange* NewMediaChange(TInt aMcId)=0;
+
+
+ /**
+ Creates a platform specific power supply unit object.
+
+ The function is called from TMMCardControllerInterface::Create(), and
+ an implementation must be provided by the platform specific layer in
+ the Variant DLL.
+
+ @param aVccNum The power supply unit number
+ @param aMcId The associated media change number.
+
+ @return A pointer to the new power supply unit object.
+
+ @see Create()
+ @see MediaChangeID()
+ @see VccID()
+ */
+ virtual DMMCPsu* NewVcc(TInt aVccNum, TInt aMcId)=0;
+
+ /**
+ Creates a platform specific VccCore power supply unit object.
+
+ The function is called from TMMCardControllerInterface::Create(), and
+ an implementation can be provided by the platform specific layer in
+ the Variant DLL.
+
+ @param aVccQNum The power supply unit number (must match paired Vcc unit number).
+ @param aMcId The associated media change number.
+
+ @return A pointer to the new power supply unit object.
+
+ @see Create()
+ @see MediaChangeID()
+ @see VccID()
+ */
+ virtual inline DMMCPsu* NewVccCore(TInt aVccCoreNum, TInt aMcId);
+
+
+ /**
+ Performs platform specific initialisation.
+
+ The function is called from TMMCardControllerInterface::Create(), and
+ an implementation must be provided by the platform specific layer in
+ the Variant DLL.
+
+ @return KErrNone to indicate that initialisation has completed
+ successfully, otherwise one of the other system-wide error codes
+ to indicate initialisation failure.
+
+ @see Create()
+ */
+ virtual TInt Init()=0;
+
+
+ /**
+ Indicates whether the peripheral bus socket, as identified by the specified
+ peripheral bus socket number, is designated as a MultiMediaCard socket on
+ this platform.
+
+ If the socket is designated as a MultiMediaCard socket, then the function
+ must also provide the media information for that socket.
+
+ The function is called from TMMCardControllerInterface::Create(), and
+ an implementation must be provided by the platform specific layer in
+ the Variant DLL.
+
+ @param aSocket The peripheral bus socket number.
+ @param aMediaDeviceInfo The media information for that socket, if
+ the socket is designated as a MultiMediaCard
+ socket.
+
+ @return True, if the socket is designated as a MultiMediaCard socket;
+ false, otherwise.
+
+ @see Create()
+ */
+ virtual TBool IsMMCSocket(TInt aSocket,SMediaDeviceInfo& aMediaDeviceInfo)=0;
+
+
+ /**
+ Reports which media change object is to be associated with the specified
+ peripheral bus socket number.
+
+ The function is called from TMMCardControllerInterface::Create(), and
+ an implementation must be provided by the platform specific layer in
+ the Variant DLL.
+
+ @param aSocket The socket number
+
+ @return The media change number.
+
+ @see Create()
+ @see NewMediaChange()
+ */
+ virtual TInt MediaChangeID(TInt aSocket)=0;
+
+
+ /**
+ Reports which power supply unit (PSU) object is to be associated with
+ the specified peripheral bus socket number.
+
+ The function is called from TMMCardControllerInterface::Create(), and
+ an implementation must be provided by the platform specific layer in
+ the Variant DLL.
+
+ @param aSocket The socket number.
+
+ @return The power supply unit number.
+
+ @see Create()
+ @see NewVcc()
+ */
+ virtual TInt VccID(TInt aSocket)=0;
+
+protected:
+
+
+ /**
+ * Performs registration of the media devices on the current socket
+ * @internalComponent
+ */
+ IMPORT_C virtual TInt RegisterMediaDevices(TInt aSocket);
+ };
+
+
+DMMCPsu* TMMCardControllerInterface::NewVccCore(TInt /*aVccCoreNum*/, TInt /*aMcId*/)
+/**
+ * Default implementation.
+ * Only eMMC v4.3+ media supports a seperate supply for VccCore.
+ */
+ {return NULL;};
+
+#endif
+
+