diff -r 000000000000 -r a41df078684a kernel/eka/include/drivers/mmccd_ifc.h --- /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 +#include + + + + +/** +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 + +