📄 nanddefs.h
字号:
/***********************************************************************************/
/* M-Systems Confidential */
/* Copyright (C) M-Systems Flash Disk Pioneers Ltd. 1995-2003 */
/* All Rights Reserved */
/***********************************************************************************/
/* NOTICE OF M-SYSTEMS OEM */
/* SOFTWARE LICENSE AGREEMENT */
/* */
/* THE USE OF THIS SOFTWARE IS GOVERNED BY A SEPARATE LICENSE */
/* AGREEMENT BETWEEN THE OEM AND M-SYSTEMS. REFER TO THAT AGREEMENT */
/* FOR THE SPECIFIC TERMS AND CONDITIONS OF USE, */
/* OR CONTACT M-SYSTEMS FOR LICENSE ASSISTANCE: */
/* E-MAIL = info@m-sys.com */
/***********************************************************************************/
/*
* $Log: V:/PVCSDB/DiskOnChip/archives/general storage/TrueFFS/src/mtd/nanddefs.h-arc $
*
* Rev 1.2 Dec 03 2003 17:59:08 roneng
* Add definition for Toshiba 2K Page SLC 1GBit & 2GBit
*
* Rev 1.1 Aug 10 2003 13:57:18 roneng
* - Add definition for 1GBit,2Gbit & 4GBit samsung flashes
*
* Rev 1.0 Apr 09 2003 12:15:56 OriS
* Initial revision.
*
*/
#ifndef NANDDEFS_H
#define NANDDEFS_H
#include "flflash.h"
#ifdef MTD_STANDALONE
#include "mtdsa.h"
#endif /* MTD_STANDALONE */
typedef FLByte Reg8bitType;
typedef FLWord Reg16bitType;
typedef struct {
#ifdef RAM_MTD
FLWord pageSize;
FLWord pageAndTailSize;
#endif /* RAM_MTD */
FLWord vendorID;
FLWord chipID;
FLDword pageMask; /* ...these............... */
FLWord pageAreaSize; /* .......variables....... */
FLWord tailSize; /* .............interleave */
FLWord noOfBlocks; /* total erasable blocks in flash device*/
FLWord pagesPerBlock;
FLByte currentFloor; /* 0 .. totalFloors-1 */
FLDword floorSize; /* in bytes */
FLDword floorSizeMask;
FLByte floorSizeBits;
FLByte if_cfg; /* host access type */
FLWord 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))
FLByte* readBackBuffer; /* buffer for map through buffer */
#endif /* VERIFY_WRITE || VERIFY_ERASE || VERIFY_VOLUME */
FLWord 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 KM29V1024000_FLASH 0xec79
#define K9F1G08U0M_FLASH 0xecc1
#define K9F2G08U0M_FLASH 0xecda
#define K9F4G08U0M_FLASH 0xecdc
#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
#define TC58100FT 0x9879 /* Toshiba 128MBx8 MLC */
#define TC58010FT 0x9879 /* Toshiba 128MBx8 SLC */
#define KF2816U0C 0xEC53 /* Samsung 16MBx16 SLC */
#define KF2832U0C 0xEC55 /* Samsung 32MB*16 SLC */
#define TC58020FT 0x98DA /* Toshiba 256MBx8 MLC */
#define TC58NVG0S3AFT05 0x98F1 /* Toshiba 128MBx8 2KP */
#define TC58NVG1S3AFT05 0x98DA /* Toshiba 256MBx8 2KP */
/*******************************/
/**** 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(FLDword lowAddress, FLDword highAddress);
#else
FLStatus doc2000SearchForWindow(FLSocket * socket, FLDword lowAddress,
FLDword 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(FLDword lowAddress, FLDword highAddress);
extern FLStatus flRegisterDOCOREN(void);
extern FLStatus flRegisterDOCRam(void);
#else
FLStatus docPlusSearchForWindow(FLSocket * socket, FLDword lowAddress,
FLDword highAddress);
FLStatus docPlusIdentify(FLFlash vol);
void docPlusFreeWindow(FLSocket * socket);
#endif /* MTD_FOR_EXB */
#endif /* NANDDEFS_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -