223 lines
9.1 KiB
C
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 */
|