diff -r 000000000000 -r a41df078684a kernel/eka/include/drivers/crashflashnor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kernel/eka/include/drivers/crashflashnor.h Mon Oct 19 15:55:17 2009 +0100 @@ -0,0 +1,103 @@ +// Copyright (c) 2004-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\drivers\crashflash\crashflashnor.h +// +// WARNING: This file contains some APIs which are internal and are subject +// to change without notice. Such APIs should therefore not be used +// outside the Kernel and Hardware Services package. +// + +#ifndef __CRASH_FLASH_NOR_H__ +#define __CRASH_FLASH_NOR_H__ + +#ifndef EPOC32 + +#include +#include + +/* @file +@internalTechnology +*/ + +/* The generic crash flash nor support allows for a 32, 16, or 8 bit interface + * to the nor flash chip. One of the following should be defined in the + * variant's mmp file. + */ +#ifdef TCFI_4BYTE_WORD +typedef TUint32 TCFIWord; +#elif defined(TCFI_2BYTE_WORD) +typedef TUint16 TCFIWord; +#elif defined(TCFI_1BYTE_WORD) +typedef TUint8 TCFIWord; +#else +#error One of TCFI_4BYTE_WORD, TCFI_2BYTE_WORD, or TCFI_1BYTE_WORD must be defined. +#endif + +/** +An implmentation of the CrashFlash interface for nor flash. +@internalTechnology +*/ +class CrashFlashNor : public CrashFlash + { +public: + TInt Initialise(); + void StartTransaction(); + void EndTransaction(); + void Write(const TDesC8& aDes); + void WriteSignature(const TDesC8& aDes); + void Read(TDes8& aDes); + void SetReadPos(TUint aPos); + void SetWritePos(const TUint aPos); + void EraseLogArea(); + TUint BytesWritten(); + void EraseFlashBlock(TUint aBlock); +#ifdef _CRASHLOG_COMPR + TUint GetOutputLimit(); + TUint GetLogOffset(); +#endif +protected: + /** @publishedPartner + @released */ + virtual TInt VariantInitialise()=0; + /** @publishedPartner + @released */ + virtual void DoWrite(TCFIWord aWord)=0; + /** @publishedPartner + @released */ + virtual TCFIWord DoRead()=0; + /** @publishedPartner + @released */ + virtual void DoEraseBlock(TUint aBlock)=0; +private: + TCFIWord iWriteBuf; + TCFIWord iReadBuf; + TUint iWriteBufBytes; + TUint iReadBufBytes; +protected: + /** @publishedPartner + @released */ + TUint iEraseBlockSize; + /** @publishedPartner + @released */ + TUint iWritePos; + /** @publishedPartner + @released */ + TUint iReadPos; +private: + TUint iWriteTotal; + }; + +#endif + +#endif