/* * $Log: V:/Flite/archives/TrueFFS5/Src/NANDDEFS.H_V $ * * Rev 1.9 Apr 15 2002 07:38:10 oris * Added 2 additional fields to mtdVars record for backwards compatibility (under RAM_MTD compilation flag) * - unsigned short pageSize; * - unsigned short pageAndTailSize; * * Rev 1.8 Jan 20 2002 20:29:14 oris * Changed doc2000FreeWindow prototype to remove warnings. * Changed docPlusFreeWindow prototype to remove warnings. * * Rev 1.7 Jan 17 2002 23:03:52 oris * Definitions for the new memory access routine mechanism * - NDOC2window was moved from docsys.h * - Add pointer to read back buffer when MTD_RECONSTRUCT_BBT and VERIFY_VOLUME compilation flags are defined. * Replaced flbuffer.h include with flflash.h * Changed win_io from unsigned to word. * Changed the use of vol (macro *pVol) to *flash in NFDC21thisVars. * * Rev 1.6 Sep 15 2001 23:47:50 oris * Added 128MB flash support * * Rev 1.5 Jul 13 2001 01:08:58 oris * Added readBackBuffer pointer for the VERIFY_WRITE Compilation flag. * * Rev 1.4 May 16 2001 21:21:14 oris * Change "data" named variables to flData to avoid name clashes. * * Rev 1.3 Apr 10 2001 16:43:40 oris * Added prototype of docSocketInit. * * Rev 1.2 Apr 01 2001 07:48:26 oris * Revised in order to support both diskonchip 2000 family and doc plus family. * * Rev 1.1 Feb 07 2001 17:42:24 oris * removed MAX_FLASH_DEVICES_MDOC define since alone can support 16 chips * * Rev 1.0 Feb 04 2001 12:26:10 oris * Initial revision. * */ /************************************************************************/ /* */ /* FAT-FTL Lite Software Development Kit */ /* Copyright (C) M-Systems Ltd. 1995-2001 */ /* */ /************************************************************************/ #ifndef NANDDEFS_H #define NANDDEFS_H #include "flflash.h" typedef byte Reg8bitType; typedef word Reg16bitType; typedef struct { #ifdef RAM_MTD unsigned short pageSize; unsigned short pageAndTailSize; #endif /* RAM_MTD */ unsigned short vendorID; unsigned short chipID; dword pageMask; /* ...these............... */ unsigned short pageAreaSize; /* .......variables....... */ unsigned short tailSize; /* .............interleave */ unsigned short noOfBlocks; /* total erasable blocks in flash device*/ unsigned short pagesPerBlock; unsigned char currentFloor; /* 0 .. totalFloors-1 */ long floorSize; /* in bytes */ long floorSizeMask; byte floorSizeBits; byte if_cfg; /* host access type */ unsigned short flags; /* bitwise: BIG_PAGE, SLOW_IO etc. */ FLBuffer* buffer; /* buffer for map through buffer */ #if (defined(VERIFY_WRITE) || defined(VERIFY_ERASE) || defined(MTD_RECONSTRUCT_BBT) || defined(VERIFY_VOLUME)) byte* readBackBuffer; /* buffer for map through buffer */ #endif /* VERIFY_WRITE || VERIFY_ERASE || VERIFY_VOLUME */ word win_io; /* pointer to DOC CDSN_IO */ NDOC2window win; /* pointer to DOC memory window */ } NFDC21Vars; #define NFDC21thisVars ((NFDC21Vars *) flash->mtdVars) #define NFDC21thisWin (NFDC21thisVars->win) #define NFDC21thisIO (NFDC21thisVars->win_io) #define NFDC21thisBuffer (NFDC21thisVars->buffer->flData) /* Flash commands */ #define SERIAL_DATA_INPUT 0x80 #define READ_MODE 0x00 #define READ_MODE_2 0x50 #define RESET_FLASH 0xff #define SETUP_WRITE 0x10 #define SETUP_ERASE 0x60 #define CONFIRM_ERASE 0xd0 #define READ_STATUS 0x70 #define READ_ID 0x90 #define SUSPEND_ERASE 0xb0 #define REGISTER_READ 0xe0 /* commands for moving flash pointer to areeas A,B or C of page */ typedef enum { AREA_A = READ_MODE, AREA_B = 0x1, AREA_C = READ_MODE_2 } PointerOp; #define FAIL 0x01 /* error in block erase */ #define EXTRA_LEN 8 /* In memory of 4MB chips */ #define SECTOR_EXTRA_LEN 16 /* Flash IDs*/ #define KM29N16000_FLASH 0xec64 #define KM29N32000_FLASH 0xece5 #define KM29V64000_FLASH 0xece6 #define KM29V128000_FLASH 0xec73 #define KM29V256000_FLASH 0xec75 #define KM29V512000_FLASH 0xec76 #define NM29N16_FLASH 0x8f64 #define NM29N32_FLASH 0x8fe5 #define NM29N64_FLASH 0x8fe6 #define TC5816_FLASH 0x9864 #define TC5832_FLASH 0x98e5 #define TC5864_FLASH 0x98e6 #define TC58128_FLASH 0x9873 #define TC58256_FLASH 0x9875 #define TC58512_FLASH 0x9876 #define TC581024_FLASH 0x9877 /*******************************/ /**** Exported routines ****/ /*******************************/ /* DiskOnChip 2000 family registration routines */ #ifndef MTD_STANDALONE extern FLBoolean checkWinForDOC(unsigned driveNo, NDOC2window memWinPtr); #endif /* MTD_STANDALONE */ #ifndef MTD_FOR_EXB extern FLStatus flRegisterDOC2000(void); extern FLStatus flRegisterDOCSOC(dword lowAddress, dword highAddress); #else FLStatus doc2000SearchForWindow(FLSocket * socket, dword lowAddress, dword highAddress); FLStatus doc2000Identify(FLFlash vol); void doc2000FreeWindow(FLSocket * socket); #endif /* MTD_FOR_EXB */ /* DiskOnChip Plus family registration routines */ #ifndef MTD_STANDALONE extern FLBoolean checkWinForDOCPLUS(unsigned driveNo, NDOC2window memWinPtr); extern void docSocketInit(FLSocket vol); #endif /* MTD_STANDALONE */ #ifndef MTD_FOR_EXB extern FLStatus flRegisterDOCPLUS(void); extern FLStatus flRegisterDOCPLUSSOC(dword lowAddress, dword highAddress); #else FLStatus docPlusSearchForWindow(FLSocket * socket, dword lowAddress, dword highAddress); FLStatus docPlusIdentify(FLFlash vol); void docPlusFreeWindow(FLSocket * socket); #endif /* MTD_FOR_EXB */ #endif /* NANDDEFS_H */