kernel/eka/include/drivers/pccd_ifc.h
author Tom Cosgrove <tom.cosgrove@nokia.com>
Fri, 28 May 2010 16:29:07 +0100
changeset 30 8aab599e3476
parent 0 a41df078684a
permissions -rw-r--r--
Fix for bug 2283 (RVCT 4.0 support is missing from PDK 3.0.h) Have multiple extension sections in the bld.inf, one for each version of the compiler. The RVCT version building the tools will build the runtime libraries for its version, but make sure we extract all the other versions from zip archives. Also add the archive for RVCT4.

// 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