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

223 lines
9.1 KiB
C

/*
* $Log: V:/Flite/archives/TrueFFS5/Src/DISKONC.H_V $
*
* Rev 1.8 Jan 17 2002 22:58:12 oris
* Removed EXTRA_LEN
*
* Rev 1.7 Nov 08 2001 10:44:40 oris
* Added BBT_MAX_DISTANCE definition
*
* Rev 1.6 Jul 13 2001 00:59:52 oris
* Moved VERIFY_WRITE and VERIFY_ERASE compilation flag to flcustom.h.
* Added file header.
*
*/
/*******************************************************************
*
* DESCRIPTION: basic mtd functions for the DiskOnChip 2000 family
*
* AUTHOR: Dimitry Shmidt
*
* HISTORY: OSAK 1.23
*
*******************************************************************/
/***********************************************************************************/
/* M-Systems Confidential */
/* Copyright (C) M-Systems Flash Disk Pioneers Ltd. 1995-2001 */
/* 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 */
/***********************************************************************************/
#ifndef DISKONC_H
#define DISKONC_H
#include "docsys.h"
#ifndef MTD_STANDALONE
extern FLBoolean checkWinForDOC(unsigned driveNo, NDOC2window memWinPtr);
#endif /* MTD_STANDALONE */
/*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ.*/
/* Feature list */
/*ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ.*/
/* #define MULTI_ERASE */ /* use multiple block erase feature */
/* #define WIN_FROM_SS */ /* call Socket Services to get window location */
/* #define BIG_PAGE_ENABLED */ /* compile support for 2MB flashes */
/* #define SEPARATED_CASCADED */ /* export each floor as a SEPARATED device */
#define BUSY_DELAY 30000
#define START_ADR 0xC8000L
#define STOP_ADR 0xF0000L
#define PAGES_PER_BLOCK 16 /* 16 pages per block on a single chip */
#define CHIP_PAGE_SIZE 0x100 /* Page Size of 2 Mbyte Flash */
/* miscellaneous limits */
/*#define MAX_FLASH_DEVICES_MDOC 2 *//* Removed in osak 5.0 */
#define MAX_FLASH_DEVICES_DOC 16
#define MAX_FLOORS 4
#define CHIP_ID_DOC 0x20
#define CHIP_ID_MDOC 0x30
#define MDOC_ALIAS_RANGE 0x100
#define ALIAS_RESOLUTION (MAX_FLASH_DEVICES_DOC + 10)
/*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Definition for writing boot image ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/
#define SPL_SIZE 0x2000 /* 8 KBytes */
#define MAX_CODE_MODULES 6 /* max number of code modules in boot area (incl. SPL) */
/*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Definition for doc2000 tsop bbt ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/
#define BBT_SIGN_SIZE 8
#define BBT_SIGN "MSYS_BBT"
#define MAX_BAD_PER_512 40
#define BBT_MAX_DISTANCE 0x20
/*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Definition of DOC 2000 memory window ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ*/
/*
DOC 2000 memory window layout :
0000 .... 003F IPL ROM ( part 1 )
0040 .... 07FF (aliased 20H times)
0800 .... 083F IPL ROM ( part 2 )
0840 .... 0FFF (aliased 20H times)
1000 Chip Id
1001 DOC_Status_reg
1002 DOC_Control_reg
1003 ASIC_Control_reg
CDSN window -----> 1004 CDSN_Control_reg
1005 CDSN_Device_Selector
1006 ECC_Config_reg
1007 ECC_Status_reg
1008 .... 100C Test registers [5]
100D CDSN_Slow_IO_reg
100E .... 100F reserved ( 2 bytes )
1010 .... 1015 ECC_Syndrom [6]
1016 .... 17FF reserved ( 2027 bytes )
1800 .... 1FFF CDSN_IO (aliased 800H times)
*/
/*-----------------------------------------
| Definition of MDOC 2000 memory window |
----------------------------------------*/
/* MDOC 2000 memory window layout :
0000 .... 01FF IPL SRAM ( part 1 )
0200 .... 07FF (aliased 4 times)
0800 .... 0FFF CDSN_IO (aliased 800H times)
1000 Chip Id
1001 DOC_Status_reg
1002 DOC_Control_reg
1003 ASIC_Control_reg
CDSN window -----> 1004 CDSN_Control_reg
1005 CDSN_Device_Selector
1006 ECC_Config_reg
1007 .... 100C reserved ( 6 bytes )
100D CDSN_Slow_IO_reg
100E .... 100F reserved ( 2 bytes )
1010 .... 1015 ECC_Syndrom [6]
1016 .... 101A reserved ( 5 bytes )
101B Alias_Resolution_reg
101C Config_Input_reg
101D Read_Pipeline_Init_reg
101E Write_Pipeline_Term_reg
101F Last_Data_Read_reg
1020 NOP_reg
1021 .... 103E reserved ( 30 )
103F Foundary_Test_reg
1040 .... 17FF reserved ( 1984 bytes (7C0) )
1800 .... 19FF IPL SRAM ( part 1 )
1A00 .... 1FFF (aliased 4 times)
*/
#define NIPLpart1 0x0 /* read */
#define NIPLpart2 0x800 /* read */
#define NchipId 0x1000 /* read */
#define NDOCstatus 0x1001 /* read */
#define NDOCcontrol 0x1002 /* write */
#define NASICselect 0x1003 /* read write */
#define Nsignals 0x1004 /* read write */
#define NdeviceSelector 0x1005 /* read write */
#define NECCconfig 0x1006 /* write */
#define NECCstatus 0x1007 /* read */
#define NslowIO 0x100d /* read write */
#define Nsyndrom 0x1010 /* read */
#define NaliasResolution 0x101B /* read write MDOC only */
#define NconfigInput 0x101C /* read write - || - */
#define NreadPipeInit 0x101D /* read - || - */
#define NwritePipeTerm 0x101E /* write - || - */
#define NreadLastData 0x101F /* read write - || - */
#define NNOPreg 0x1020 /* read write - || - */
#define NfoudaryTest 0x103F /* write */
#define Nio 0x1800 /* read write */
/* bits for writing to DOC2window.DOCcontrol reg */
#define ASIC_NORMAL_MODE 0x85
#define ASIC_RESET_MODE 0x84
#define ASIC_CHECK_RESET 0x00
/* bits for writing to DOC2window.signals ( CDSN_Control reg ) */
#define CE 0x01 /* 1 - Chip Enable */
#define CLE 0x02 /* 1 - Command Latch Enable */
#define ALE 0x04 /* 1 - Address Latch Enable */
#define WP 0x08 /* 1 - Write-Protect flash */
#define FLASH_IO 0x10
#define ECC_IO 0x20 /* 1 - turn ECC on */
#define PWDO 0x40
/* bits for reading from DOC2window.signals ( CDSN_Control reg ) */
#define RB 0x80 /* 1 - ready */
/* bits for writing to DOC2window.ECCconfig */
#define ECC_RESET 0x00
#define ECC_IGNORE 0x01
#define ECC_RESERVED 0x02 /* reserved bits */
#define ECC_EN (0x08 | ECC_RESERVED) /* 1 - enable ECC */
#define ECC_RW (0x20 | ECC_RESERVED) /* 1 - write mode, 0 - read mode */
/* bits for reading from DOC2window.ECCstatus */
#define ECC_ERROR 0x80
#define TOGGLE 0x04 /* used for DOC 2000 detection */
#define MDOC_ASIC 0x08 /* MDOC asic */
/*----------------------------------------------------------------------*/
/* c h e c k W i n F o r D o c */
/* */
/* Checks if a given window is valid DOC window. */
/* */
/* Parameters: */
/* memWinPtr host base address of the window */
/* */
/* Returns: */
/* TRUE if there is DOC FALSE otherwise */
/*----------------------------------------------------------------------*/
/* extern FLBoolean checkWinForDOC(unsigned driveNo, NDOC2window memWinPtr); */
#endif /* DISKONC_H */