windows-nt/Source/XPSP1/NT/drivers/storage/tffsport/docsys.h
2020-09-26 16:20:57 +08:00

152 lines
6.4 KiB
C

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