--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/include/drivers/pccd_ifc.h Mon Oct 19 15:55:17 2009 +0100
@@ -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
+
+