|
|
/*
* $Log: V:/Flite/archives/TrueFFS5/Src/DOCSYS.H_V $ * * Rev 1.12 Apr 15 2002 07:36:04 oris * Reorganized for final release. * * Rev 1.11 Feb 19 2002 20:59:04 oris * Removed flflash.h include directive. * * Rev 1.10 Jan 28 2002 21:24:20 oris * Removed the use of back-slashes in macro definitions. * Replaced FLFlash argument with DiskOnChip memory base pointer. * Changed interface of write and set routines (those that handle more then 8/16 bits) so that instead of FLFlash record they receive the DiskOnChip memory window base pointer and offset (2 separated arguments). The previous implementation did not support address * shifting properly. * Changed memWinowSize to memWindowSize * Removed FL_ACCESS_NO_STRING. * * Rev 1.9 Jan 17 2002 22:59:46 oris * Completely revised, to support runtime customization and all M-Systems * DiskOnChip devices * * Rev 1.8 Nov 16 2001 00:19:58 oris * Added new line in the end, to remove warning. * * Rev 1.7 Sep 25 2001 15:35:04 oris * Restored to OSAK 4.3 implementation. * */
/************************************************************************/ /* */ /* FAT-FTL Lite Software Development Kit */ /* Copyright (C) M-Systems Ltd. 1995-2001 */ /* */ /************************************************************************/
/************************************************************************/ /* I M P O R T E N T */ /* */ /* The file contains DiskOnChip memory access routines and macros */ /* defintions. */ /* */ /* In order to use the complete set of TrueFFS memory access routine */ /* that allows runtime configuration of each socket access type make */ /* sure the FL_NO_USE_FUNC is not defined in either: */ /* FLCUSTOME.H - when using TrueFFS SDK based application */ /* MTDSA.H - when using Boot SDK based application */ /* */ /* If you know the exact configuration of your application you can */ /* uncomment the FL_NO_USE_FUNC definition and set the proper access */ /* type using the macroe defintion bellow. */ /************************************************************************/
#ifndef DOCSYS_H
#define DOCSYS_H
#include "nanddefs.h"
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
#ifdef FL_NO_USE_FUNC
#error "current version does not support the FL_NO_USE_FUNC compilation flag\r\n"
/*
* If you chose to customize the memory access routine using macroes, simply * add your implementation here. */ #define flWrite8bitReg(flash,offset,val)
#define flRead8bitReg(flash,offset)
#define docread
#define docwrite
#define docset
/* DiskOnChip Plus memory access routines */
#define flWrite8bitRegPlus(flash,offset,val)
#define flRead8bitRegPlus(flash,offset) 0x0
#define flWrite16bitRegPlus(flash,offset,val)
#define flRead16bitRegPlus(flash,offset) 0x0
#define docPlusRead(win,offset,dest,count)
#define docPlusWrite(win,offset,src,count)
#define docPlusSet(win,offset,count,val)
#define DOC_WIN 0x2000
#define setBusTypeOfFlash(flash,access) flOK
#else
/* DiskOnChip memory access routines */
#define flWrite8bitReg(flash,offset,val) flash->memWrite8bit(flash->win,offset,val)
#define flRead8bitReg(flash,offset) flash->memRead8bit(flash->win,offset)
#define docread flash->memRead
#define docwrite flash->memWrite
#define docset flash->memSet
/* DiskOnChip Plus memory access routines */
#define flWrite8bitRegPlus(flash,offset,val) flash->memWrite8bit(flash->win,offset,val)
#define flRead8bitRegPlus(flash,offset) flash->memRead8bit(flash->win,offset)
#define flWrite16bitRegPlus(flash,offset,val) flash->memWrite16bit(flash->win,offset,val)
#define flRead16bitRegPlus(flash,offset) flash->memRead16bit(flash->win,offset)
#define docPlusRead(win,offset,dest,count) flash->memRead(win,offset,dest,count)
#define docPlusWrite(win,offset,src,count) flash->memWrite(win,offset,src,count)
#define docPlusSet(win,offset,count,val) flash->memSet(win,offset,count,val)
#define DOC_WIN flash->memWindowSize()
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
/*
* DiskOnChip Access routines types */
/* (public) types of DiskOnChip access configurations */
#define FL_BUS_HAS_8BIT_ACCESS 0x00000001L /* Bus can access 8-bit */
#define FL_BUS_HAS_16BIT_ACCESS 0x00000002L /* Bus can access 16-bit */
#define FL_BUS_HAS_32BIT_ACCESS 0x00000004L /* Bus can access 32-bit */
#define FL_BUS_HAS_XX_ACCESS_MASK 0x0000000FL /* Bus can access mask */
#define FL_NO_ADDR_SHIFT 0x00000000L /* No address shift */
#define FL_SINGLE_ADDR_SHIFT 0x00000010L /* Single address shift */
#define FL_DOUBLE_ADDR_SHIFT 0x00000020L /* Double address shift */
#define FL_XX_ADDR_SHIFT_MASK 0x000000F0L /* Address shift mask */
/* (private) types of DiskOnChip access configurations */
#define FL_8BIT_DOC_ACCESS 0x00000000L /* Has 8 data bits */
#define FL_16BIT_DOC_ACCESS 0x00000100L /* Has 16 data bits */
#define FL_XX_DATA_BITS_MASK 0x00000300L /* Mask of the above */
#define FL_8BIT_FLASH_ACCESS 0x00000400L /* 8 bits of flash per cycle */
#define FL_16BIT_FLASH_ACCESS 0x00000800L /* 16 bits of flash per cycle */
#define FL_XX_FLASH_ACCESS_MASK 0x00000C00L /* Mask of the above */
#define FL_ACCESS_USER_DEFINED 0x00001000L /* User defined routines */
/* DiskOnChip routines prototypes */
extern FLStatus setBusTypeOfFlash(FLFlash * flash,dword access);
#endif /* FL_NO_USE_FUNC */
#endif /* DOCSYS_H */
|