📄 mtdsa.c
字号:
/***********************************************************************************/
/* 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/misc/mtdsa.c-arc $
*
* Rev 1.3 Sep 01 2003 19:05:46 oris
* - Changed noOfSockets to int instead of FLByte - removed compilation warnings.
* - changed MTDS definition to FL_MTDS
*
* Rev 1.2 May 06 2003 11:56:14 OriS
* Removed memory manipulation routine pointers.
*
* Rev 1.1 Apr 27 2003 14:12:14 Oris
* Bug fix - added support for ENVIRONMENT_VARS compilation flag.
*
* Rev 1.0 Apr 09 2003 12:15:56 OriS
* Initial revision.
*
*/
/************************************************************************/
/* */
/* Standalone MTD Kit */
/* */
/************************************************************************/
/************************************************************************/
/* File Header */
/* ----------- */
/* Name : mtdsa.c */
/* */
/* Description : This file contains auxiliary routines for the MTD */
/* standalone package, replacing TrueFFS routines. */
/* */
/* Note : This file should be added to the project only if the */
/* MTS_STANDALONE compilation flag is defined in FLCUSTOM.H */
/* */
/* It is not a part of a TrueFFS project. */
/* */
/************************************************************************/
#include "flbase.h"
#include "nanddefs.h"
#include "docsys.h"
#include "docbdk.h"
#ifdef MTD_STANDALONE
#include "flbuffer.h" /* defintion for READ_BACK_BUFFER_SIZE */
#ifndef FL_NO_USE_FUNC
FLDword flBusConfig[SOCKETS] = {FL_NO_ADDR_SHIFT |
FL_BUS_HAS_8BIT_ACCESS |
FL_BUS_HAS_16BIT_ACCESS |
FL_BUS_HAS_32BIT_ACCESS};
#endif /* FL_NO_USE_FUNC */
#ifdef VERIFY_WRITE
FLByte MTDSAReadBackBuffer[1024]; /* Ori - Should be moved to logical MTD */
#endif /* VERIFY_WRITE */
FLBuffer MTDSABuffer ;
FLFlash MTDSAFlash; /* flash record for the stand alone version */
FLSocket MTDSASocket; /* socket record for the stand alone version */
FREEmtd freeTable[FL_MTDS];
FLByte noOfSockets;
/*----------------------------------------------------------------------*/
/* f l S e t W i n d o w S i z e */
/* */
/* Requests to set the window size to a specified value (power of 2). */
/* The window size is set to a size equal or greater than requested, */
/* if possible in hardware. */
/* */
/* Parameters: */
/* vol : Pointer identifying drive */
/* sizeIn4KBUnits : Requested window size in 4 KByte units. */
/* MUST be a power of 2. */
/* */
/*----------------------------------------------------------------------*/
void flSetWindowSize(FLSocket * socketPtr, unsigned sizeIn4KBunits)
{
socketPtr->window.size = (FLDword) sizeIn4KBunits << 12L;
socketPtr->window.base = physicalToPointer((FLDword) socketPtr->window.baseAddress << 12,
socketPtr->window.size,socketPtr->volNo);
}
#ifndef FL_NO_USE_FUNC
/*----------------------------------------------------------------------*/
/* f l S e t D o c B u s R o u t i n e */
/* */
/* Set user defined memory acces routines for DiskOnChip. */
/* */
/* Parameters: */
/* socket : Socket number to install routine for. */
/* structPtr : Pointer to function structure. */
/* */
/* Returns: */
/* FLStatus : 0 on success, otherwise failed */
/*----------------------------------------------------------------------*/
FLStatus NAMING_CONVENTION flSetDocBusRoutine(FLByte socket, FLAccessStruct FAR1 * structPtr)
{
FLFlash* flash;
/* Arg sanity check */
#ifndef FL_SKIP_ARGS_CHECK
if (socket >= SOCKETS)
{
DBG_PRINT_ERR(FLZONE_BLKDEV,"ERROR - Change SOCKETS definition in flcustom.h to support that many sockets.\r\n");
return flFeatureNotSupported;
}
if(structPtr == NULL)
{
DBG_PRINT_ERR(FLZONE_BLKDEV,"ERROR - structPtr argument is NULL.\r\n");
return flBadParameter;
}
#endif /* FL_SKIP_ARGS_CHECK */
/* Make sure global variables are initialized to their default values */
bdkInit();
flash = flFlashOf(socket);
flash->memWindowSize = structPtr->memWindowSize;
flash->memRead = structPtr->memRead;
flash->memWrite = structPtr->memWrite;
flash->memSet = structPtr->memSet;
flash->memRead8bit = structPtr->memRead8bit;
flash->memRead16bit = structPtr->memRead16bit;
flash->memWrite8bit = structPtr->memWrite8bit;
flash->memWrite16bit = structPtr->memWrite16bit;
flash->memSetGetMode = structPtr->memSetGetMode;
flBusConfig[socket] = FL_ACCESS_USER_DEFINED;
return flOK;
}
/*----------------------------------------------------------------------*/
/* f l G e t D o c B u s R o u t i n e */
/* */
/* Get currently installed memory access routines for DiskOnChip. */
/* */
/* Parameters: */
/* socket : Socket number to install routine for. */
/* structPtr : Pointer to function structure. */
/* */
/* Returns: */
/* FLStatus : 0 on success, otherwise failed */
/*----------------------------------------------------------------------*/
FLStatus NAMING_CONVENTION flGetDocBusRoutine(FLByte socket, FLAccessStruct FAR1 * structPtr)
{
FLFlash* flash;
/* Arg sanity check */
#ifndef FL_SKIP_ARGS_CHECK
if (socket >= SOCKETS)
{
DBG_PRINT_ERR(FLZONE_BLKDEV,"ERROR - Change SOCKETS definition in flcustom.h to support that many sockets.\r\n");
return flFeatureNotSupported;
}
if(structPtr == NULL)
{
DBG_PRINT_ERR(FLZONE_BLKDEV,"ERROR - structPtr argument is NULL.\r\n");
return flBadParameter;
}
#endif /* FL_SKIP_ARGS_CHECK */
/* Make sure global variables are initialized to their default values */
bdkInit();
flash = flFlashOf(socket);
structPtr->memWindowSize = flash->memWindowSize;
structPtr->memRead = flash->memRead;
structPtr->memWrite = flash->memWrite;
structPtr->memSet = flash->memSet;
structPtr->memRead8bit = flash->memRead8bit;
structPtr->memRead16bit = flash->memRead16bit;
structPtr->memWrite8bit = flash->memWrite8bit;
structPtr->memWrite16bit = flash->memWrite16bit;
structPtr->memSetGetMode = flash->memSetGetMode;
structPtr->access = flBusConfig[socket];
return flOK;
}
#endif /* FL_NO_USE_FUNC */
#endif /* MTD_STANDALONE */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -