kernel/eka/include/drivers/mmccd_ifc.h
changeset 9 96e5fb8b040d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/include/drivers/mmccd_ifc.h	Thu Dec 17 09:24:54 2009 +0200
@@ -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
+
+