diff -r 000000000000 -r bde4ae8d615e os/kernelhwsrv/kernel/eka/include/drivers/pccd_ifc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/kernelhwsrv/kernel/eka/include/drivers/pccd_ifc.h Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,294 @@ +// 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\pccd_ifc.h +// +// + +/** + @file + @publishedPartner + @released +*/ + +#ifndef __PCCD_IFC_H__ +#define __PCCD_IFC_H__ +#include <pccard.h> +#include <drivers/locmedia.h> +#include <platform.h> +#include <assp.h> + +#define __PCCD_MACHINE_CODED__ + +const TInt KMemConfigByteAccess=1; + +class PccdIfc + { +public: + static DPcCardSocket* NewSocket(TInt aSocketNum); + static DPcCardMediaChange* NewMediaChange(TInt aMcId); + static DPcCardVcc* NewVcc(TInt aVccNum, TInt aMcId); + static DPccdChunkBase* NewChunk(TPccdMemType aType); + }; + + /** + A base class that defines a Pc Card controller interface. + + @publishedPartner + @released + */ +class TPcCardControllerInterface + { +public: + /** + Allocate any resources. Only done once on kernel initialization so don't worry about cleanup if it fails. + + @return KErrNone if successful in allocating memory for the Pc Card. otherwise return KErrNoMemory. + */ + IMPORT_C TInt Create(); +public: + /** + Gets the physical address of Pc Card memory. + + @param aCard A Pc Card whose physical address to be returned. + + @param aType Memory type of the Pc Card whose physical address to be returned. + + @return Physical address of Pc Card for the given memory type. + + @see TPccdMemType + */ + virtual TUint32 MemPhysicalAddress(TInt aCard,TPccdMemType aType)=0; + /** + Sets the Pc Card controller h/w. + + Initialise the Pc Card Controller h/w. + + @return KErrNone if Pc Card contorller h/w is initialised. + */ + virtual TInt Init()=0; + /** + Gets the current settings for the Pc Card. + + @param aCard A Pc Card whose signals to be indicated. + + @param anInd Has current settings for the PC Card indicator signals into 'anInd' for the specified aCard. + + @return KErrNone if successful. + + @see TSocketIndicators. + */ + virtual TInt Indicators(TInt aCard,TSocketIndicators &anInd)=0; + /** + Enables the Pc Card Interface. + + @param aCard A Pc Card whose interface to be enabled. + */ + virtual void InterfaceOn(TInt aCard)=0; + /** + Disables the Pc Card Interface. + + @param aCard A PC Card whose interface to be disabled. + */ + virtual void InterfaceOff(TInt aCard)=0; + /** + To Apply/remove h/w reset. + + @param aCard A Pc Card which has to be h/w reseted. + + @param anAssert To make the h/w reset guarented. + */ + virtual void CardReset(TInt aCard,TBool anAssert)=0; + /** + Gets Pc Card Rdy/Bsy status. + + @param aCard Pc Card whose status to be returned. + + @return True if the card is ready. + */ + virtual TBool CardReady(TInt aCard)=0; + /** + Configure memory configuration options. + + @param aCard Pc Card whose memory to be configured. + + @param aMemType Type of memory to be configured. + + @param aSpeed Access speed of the memory involved. + + @param aWaitSig This WaitSig should never checked since repeated accesses to MECR seem to crash the system + in mysterious ways. + + @param aFlag To modify the memory configuration attributes by ORing with memory chunk setup flags pKPccdBusWidth32 and KPccdDisableWaitStateCntrl , + + @return KErrNone if successful, KErrNotSupported if unsuccessful. + + @see TPccdMemType. + + @see TPccdAccessSpeed. + */ + virtual TInt MemConfig(TInt aCard,TPccdMemType aMemType,TPccdAccessSpeed aSpeed,TBool aWaitSig,TUint aFlag)=0; + /** + Gets the information of the socket. + + @param aSocket Socket whose information to be retrieved. + + @param anInfo Gets the socket information in anInfo. + + @see TPcCardSocketInfo. + */ + virtual void SocketInfo(TSocket aSocket,TPcCardSocketInfo& anInfo)=0; + /** + Checks the specified socket contains a card (and the media door for the socket is closed). + + @param anInfo Has the socket information. + + @param aCard Socket for which a card presence is checked. + + @return True if the socket contians a card (and the media door for the socket is closed). + */ + virtual TBool CardIsPresent(TInt aCard)=0; + /** + Gets the changed state of the specified media (ex,removed,inserted..) + + @param aMediaChangeId stores the state of the specified media change + + @return Mediastate when change to media takes place. + + @see TMediaState. + */ + virtual TMediaState MediaState(TInt aMediaChangeId)=0; + // Pc Card PSUs + /** + Sets Vcc information for the Pc Card. + + @param aPsu Power supply unit value supplied for the Pc Card. + + @param aninfo Object of TPBusPsuInfo type passed to store the PSU information. + + @see TPBusPsuInfo. + */ + virtual void VccInfo(TInt aPsu,TPBusPsuInfo &aninfo)=0; + /** + Sets Pc Card Vcc power supply OFF. + + @param aPsu Power supply unit for the Pc Card. + */ + virtual void VccOff(TInt aPsu)=0; + /** + Sets Pc Card Vcc power supply ON. + + @param aPsu Power supply unit for the Pc Card. + + @param aVoltageSetting A voltage to power on Pc Card which is defined in enum TPccdSocketVcc. + + @see TPccdSocketVcc + */ + virtual void VccOnFull(TInt aPsu,TPccdSocketVcc aVoltageSetting)=0; + /** + Sets Pc Card Vcc power supply ON with current limit. + + @param aPsu Power supply unit for the Pc Card. + + @param aVoltageSetting A voltage of current limt to power on Pc Card which is defined in enum TPccdSocketVcc. + + @see TPccdSocketVcc + */ + virtual void VccOnCurrentLimit(TInt aPsu,TPccdSocketVcc aVoltageSetting)=0; + /** + Sets Pc Card Vcc level (normally ADC reading). Return KErrNotReady if the voltage check isn't complete. + + @param aPsu Power supply unit for the Pc Card. + */ + virtual TInt VccInMilliVolts(TInt aPsu)=0; + /* + Gets Pc Card Vcc voltage status. + + An alternative to using ADC, when voltage checking is performed using a comparator arrangement. + + @param aPsu Power supply unit for the Pc Card. + + @return KErrNone if successful, KErrGeneral if failed. + */ + virtual TInt VccVoltCheck(TInt aPsu)=0; + // interrupts + /** + Gets a interrupt Id for Pc card. + + @param aCard Pc Card to which interrupts Id is requested. + + @return InterruptId of the Pc Card. + */ + virtual TInt IntIdIReq(TInt aCard)=0; + /** + Gets ready interrupt Id when ready signal is asserted on Pc Card. + + @param aCard Pc Card which is interrupted through a ready signal. + + @return Ready interrupt Id for the Pc Card. + */ + virtual TInt IntIdRdyC(TInt aCard)=0; + /** + Gets interrupt status Id when status of Pc Card changes. + + @param aCard Pc Card which is interrupted through a change in state. + + @return Interrupt status Id, for the Pc Card. + */ + virtual TInt IntIdStsC(TInt aCard)=0; + /** + Gets Mediachange interrupt Id when media changes, i,e when media door is Opend/Closed. + + @param aMediaChangeId An media chagne Id which tells whether media door is closed / Opened. + + @return Media change interrupt id, when a change in media takes place. + */ + virtual TInt IntIdMediaChange(TInt aMediaChangeId)=0; + /** + Acknowledge the media change interrupt. + + @param aMediaChangeId An media change Id which tells whether a door is closed / Opened. + */ + virtual void ClearMediaChange(TInt aMediaChangeId)=0; + // machine configuration + /** + @param aSocket the socket ID. + + @param aMediaDeviceInfo , Media information of the scoket which has to be checked. + + @return True if Pc Card is present in the secified socket. + */ + virtual TBool IsPcCardSocket(TInt aSocket,SMediaDeviceInfo& aMediaDeviceInfo)=0; + /** + Gets information about from which socket does the media change took place. + + @param aSocket the socket ID. + + @return socket from which socket does the media change took place. + */ + virtual TInt MediaChangeFromSocket(TInt aSocket)=0; + /** + Gets from which socket does the Vcc signal is generated. + + @param aSocket the socket ID. + + @return socket Id from which Vcc signal is generated. + */ + virtual TInt VccFromSocket(TInt aSocket)=0; + }; + +GLREF_D TPcCardControllerInterface* ThePccdCntrlInterface; + +#endif + +