kernel/eka/include/drivers/pccd_ifc.h
changeset 0 a41df078684a
--- /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
+
+