📄 nfdc2048.c
字号:
/*
* $Log: V:/nfdc2048.c_v $
*
* Rev 1.27 06 Oct 1997 18:37:34 ANDRY
* no COBUX
*
* Rev 1.26 06 Oct 1997 18:04:34 ANDRY
* 16-bit access only for interleave 2 cards, COBUX
*
* Rev 1.25 05 Oct 1997 12:02:32 danig
* Support chip ID 0xEA
*
* Rev 1.24 10 Sep 1997 16:14:08 danig
* Got rid of generic names
*
* Rev 1.23 08 Sep 1997 17:47:00 danig
* fixed setAddress for big-endian
*
* Rev 1.22 04 Sep 1997 13:59:44 danig
* Debug messages
*
* Rev 1.21 31 Aug 1997 15:18:04 danig
* Registration routine return status
*
* Rev 1.20 28 Aug 1997 17:47:08 danig
* Buffer\remapped per socket
*
* Rev 1.19 28 Jul 1997 15:10:36 danig
* setPowerOnCallback & moved standard typedefs to flbase.h
*
* Rev 1.18 24 Jul 1997 18:04:12 amirban
* FAR to FAR0
*
* Rev 1.17 21 Jul 1997 18:56:00 danig
* nandBuffer static
*
* Rev 1.16 20 Jul 1997 18:21:14 danig
* Moved vendorID and chipID to Vars
*
* Rev 1.15 20 Jul 1997 17:15:06 amirban
* Added Toshiba 8MB
*
* Rev 1.14 07 Jul 1997 15:22:26 amirban
* Ver 2.0
*
* Rev 1.13 02 Jul 1997 14:59:22 danig
* More wait for socket to power up
*
* Rev 1.12 01 Jul 1997 13:39:54 danig
* Wait for socket to power up
*
* Rev 1.11 22 Jun 1997 18:34:32 danig
* Documentation
*
* Rev 1.10 12 Jun 1997 17:22:24 amirban
* Allow long extra read/writes
*
* Rev 1.9 08 Jun 1997 19:18:06 danig
* BIG_PAGE & FULL_PAGE moved to flash.h
*
* Rev 1.8 08 Jun 1997 17:03:40 amirban
* Fast Toshiba and power on callback
*
* Rev 1.7 05 Jun 1997 12:31:38 amirban
* Write corrections, and att reg changes
*
* Rev 1.6 03 Jun 1997 18:45:14 danig
* powerUp()
*
* Rev 1.5 01 Jun 1997 13:42:52 amirban
* Rewrite of read/write extra + major reduction
*
* Rev 1.4 25 May 1997 16:41:38 amirban
* Bg-endian, Toshiba fix & simplifications
*
* Rev 1.3 18 May 1997 17:34:50 amirban
* Use 'dataError'
*
* Rev 1.2 23 Apr 1997 11:02:14 danig
* Update to TFFS revision 1.12
*
* Rev 1.1 15 Apr 1997 18:48:02 danig
* Fixed FAR pointer issues.
*
* Rev 1.0 08 Apr 1997 18:29:28 danig
* Initial revision.
*/
/************************************************************************/
/* */
/* FAT-FTL Lite Software Development Kit */
/* Copyright (C) M-Systems Ltd. 1995-1997 */
/* */
/************************************************************************/
#include "flflash.h"
#include "reedsol.h"
#undef NFDC2048 /* Support NFDC2048 ASIC controller */
#define MAX_FLASH_DEVICES 16
#define PAGES_PER_BLOCK 32/*16*/ /* 16 pages per block on a single chip*/
#define SYNDROM_BYTES 6 /* Number of syndrom bytes: 5 + 1 parity*/
/* Flash IDs*/
#define KM29N16000_FLASH 0xec64
#define KM29N32000_FLASH 0xece5
#define KM29V64000_FLASH 0xece6
#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 K9f1208_FLASH 0xec76
/* 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
extern int nand_get_id(void);
extern int nand_wite_page(UINT32 block,UINT8 page,UINT8 *buf);
extern int nand_read_page(UINT32 block,UINT8 page,UINT8 *buf_ret);
extern int nand_erase_block(UINT32 block);
/* 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;
typedef union { unsigned short w ; unsigned char b ; } WordByte;
/*觚
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -