⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _fltl.h

📁 H3 M-system NAND flash driver in Linux OS, M-DOC driver
💻 H
字号:
/****************************************************************************** *                                                                            * * Project: DOC Driver for Linux 2.4 Block device driver for mDOC H3  family  * * of devices under Linux kernel 2.4.                                         * *                                                                            * *   Version: 1.0                                                             * *   Email questions to: oemsupport@sandisk.com                               * *   Copyright (C) SanDisk IL Ltd. 1995 - 2007                                * *   SanDisk IL Ltd., 7 Atir Yeda Street, Kfar Saba 44425, Israel             * *                                                                            * ****************************************************************************** *                                                                            * * This program is free software; you can redistribute it and/or modify it    * * under the terms of the GNU General Public License as published by the Free * * Software Foundation; either version 2 of the License, or any later version.* * This program is distributed in the hope that it will be useful, but WITHOUT* * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or      * * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for  * * more details, which is set forth in the readme.txt file.                   * * You should have received a copy of the GNU General Public License along    * * with this program; if not, write to the Free Software Foundation, Inc., 51 * * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA                    * *                                                                            * * This License does not grant you any right to use the trademarks, service   * * marks or logos of SanDisk IL Ltd. or SanDisk Corporation.                  * * Subject to the foregoing, SanDisk IL Ltd., for itself and on behalf of its * * licensors, hereby reserves all intellectual property rights in the program,* * except for the rights expressly granted in this License.                   * *                                                                            * ******************************************************************************//*
 * $Log:   V:/PVCSDB/DiskOnChip/archives/Testing/TrueFFS 6.3/Drop 2.5/3/common/_fltl.h-arc  $
 * 
 *    Rev 1.7   Oct 09 2006 14:03:52   yaniv.iarovici
 * Removed legacy devices related code and definitions
 * 
 *    Rev 1.6   Sep 11 2006 13:45:10   yaniv.iarovici
 * Legal header added
 * 
 *    Rev 1.5   Aug 09 2006 16:52:46   Polina.Marimont
 * initial for DOC Driver 1.0
 */

#ifndef _FLTL_H
#define _FLTL_H

typedef struct {
  SectorNo sectorsInVolume;
  FLDword bootAreaSize;
  FLDword eraseCycles;
  FLDword tlUnitBits;
} TLInfo;


/* Defragment modes types */
#define FL_FAST_SPACE			0
#define FL_NORMAL_SPACE			1



typedef struct tTLrec TLrec;     /* Defined by translation layer */


struct tTL {
  TLrec       *rec;
  FLByte      partitionNo;
  FLByte      socketNo;

  /* information is necessary for hard-disk TL implementation */
  FLWord cylinders;
  FLWord heads;
  FLWord sectorsPerTrack;
  /* they should not be concealed in TL->rec field: when the media is formatted
  it would be best if geometry written in BPB would match actual disk geometry */

  /* information necessary to support fast+normal geometry */
  FLDword fastAreaSectors;
  FLWord  fastArea_SectorsInUnit_Bits;
  FLWord  normalArea_SectorsInUnit_Bits;
  FLWord  riskZoneSectors;			/* largest of fast and normal risk zones */
  FLWord  recommendedSectorsInCluster;		/* or just call it sectorsInPage (also largest) */
  /* there is no need to hide these vars via "recommendedClusterInfo" :
  they are not used by TL itself. BTW, getTLinfo is not necessary for same reason */

  void FAR1* progressCallback;

#ifndef FL_NEW_MAPSECTOR
  const void FAR0 *(*mapSector)(TLrec *, SectorNo sectorNo, CardAddress *physAddr);
#else
  FLStatus	     (*mapSector)(TLrec *, SectorNo sectorNo, void * *retBuffer);
#endif

  FLStatus       (*writeSector)(TLrec *, SectorNo sectorNo, void FAR1 *fromAddress);

  FLStatus       (*writeMultiSector)(TLrec *, SectorNo sectorNo, void FAR1 *fromAddress,SectorNo sectorCount);
  FLStatus       (*readSectors)(TLrec *, SectorNo sectorNo, void FAR1 *dest,SectorNo sectorCount);

  FLStatus       (*deleteSector)(TLrec *, SectorNo sectorNo, SectorNo noOfSectors);
  FLStatus       (*tlSetBusy)(TLrec *, FLBoolean);
  void           (*dismount)(TLrec *);
  FLStatus       (*defragment)(TLrec *, FLSDword FAR2 *sectorsNeeded, FLDword normalSpace);
  FLStatus       (*checkVolume)(TLrec *);
  SectorNo       (*sectorsInVolume)(TLrec *);
  FLStatus       (*getTLInfo)(TLrec *, TLInfo *tlInfo);
  void           (*recommendedClusterInfo)(TLrec *, FLDword *sectorsPerCluster, FLDword *clusterAlignment);

  FLStatus       (*readBBT)(TLrec *, CardAddress FAR1 * buf, FLSDword FAR2 * mediaSize, unsigned FAR2 * noOfBB);

  FLStatus       (*notifyChange)(TLrec *, void FAR1 * reserved, FLEnvVars variableType , FLDword value);
  FLStatus       (*completeOperation)(TLrec *);

  FLDword	     (* getLastMappedSectorAddress)(TLrec *);	/* use after mapSector */
  FLStatus       (* ensureFreeSectorsInUnit)(TLrec *, FLWord wVirtualUnit, FLWord * wFreeSectorsRequired);
  FLStatus       (*secureDeleteSector)(TLrec *, SectorNo sectorNo, SectorNo noOfSectors, FLBoolean secureOperation);
};



/* The address of this, if returned from map, denotes a data error */
#ifndef FL_NEW_MAPSECTOR
/* extern FLStatus dataErrorObject;
#define dataErrorToken ((void FAR0 *) &dataErrorObject) */

#define dataErrorToken ((void FAR0 *) 0xFFFFFFFF)
/* temporary - should not be necessary with new mapSector
old method (address of dataErrorObject) is not translatable across BD-FS split
or translatable with added code/complexity */
#endif /* FL_NEW_MAPSECTOR */

#ifdef FLFLASH_H
/* Translation layer registration information */

extern int noOfTLs;    /* No. of translation layers actually registered */

typedef struct {
  FLStatus (*mountRoutine)   (unsigned volNo, TL *tl, FLFlash *flash, FLFlash **volForCallback);
  FLStatus (*formatRoutine)  (unsigned volNo, TLFormatParams *deviceFormatParams, FLFlash *flash);
  FLStatus (*preMountRoutine)(FLFunctionNo callType, IOreq FAR2* ioreq ,FLFlash* flash,FLStatus* status);
} TLentry;

extern TLentry tlTable[FL_TLS];
extern FLStatus noFormat (unsigned volNo, TLFormatParams *formatParams, FLFlash *flash);
extern FLStatus flMount(unsigned volNo, unsigned socketNo,TL *, FLBoolean useFilters , FLFlash *flash);
extern FLStatus flPreMount(FLFunctionNo callType, IOreq FAR2* ioreq , FLFlash *flash);
extern unsigned noOfDrives;

#ifdef FL_FORMAT_VOLUME
extern FLStatus flFormat(unsigned volNo, TLFormatParams *formatParams, FLFlash * flash);
#endif /* FL_FORMAT_VOLUME */

#endif /* FLFLASH_H */

#endif /* FLTL_H */


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -