00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef TRANSLATEDNANDFLASH_H
00031 #define TRANSLATEDNANDFLASH_H
00032
00033
00034
00035
00036
00037 #include "MappedNandFlash.h"
00038
00039
00040
00041
00042 struct TranslatedNandFlash {
00043
00044 struct MappedNandFlash mapped;
00045 int16_t currentLogicalBlock;
00046 int16_t previousPhysicalBlock;
00047 uint8_t currentBlockPageStatuses[NandCommon_MAXNUMPAGESPERBLOCK / 8];
00048 };
00049
00050
00051
00052
00053
00054 extern uint8_t TranslatedNandFlash_Initialize(
00055 struct TranslatedNandFlash *translated,
00056 const struct NandFlashModel *model,
00057 uint32_t commandAddress,
00058 uint32_t addressAddress,
00059 uint32_t dataAddress,
00060 const Pin pinChipEnable,
00061 const Pin pinReadyBusy,
00062 uint16_t baseBlock,
00063 uint16_t sizeInBlocks);
00064
00065 extern uint8_t TranslatedNandFlash_ReadPage(
00066 const struct TranslatedNandFlash *translated,
00067 uint16_t block,
00068 uint16_t page,
00069 void *data,
00070 void *spare);
00071
00072 extern uint8_t TranslatedNandFlash_WritePage(
00073 struct TranslatedNandFlash *translated,
00074 uint16_t block,
00075 uint16_t page,
00076 void *data,
00077 void *spare);
00078
00079 extern uint8_t TranslatedNandFlash_Flush(
00080 struct TranslatedNandFlash *translated);
00081
00082 extern uint8_t TranslatedNandFlash_EraseAll(
00083 struct TranslatedNandFlash *translated,
00084 uint8_t level);
00085
00086 extern uint8_t TranslatedNandFlash_SaveLogicalMapping(
00087 struct TranslatedNandFlash *translated);
00088
00089 extern uint16_t TranslatedNandFlash_GetDeviceSizeInBlocks(
00090 const struct TranslatedNandFlash *translated);
00091
00092 extern uint32_t TranslatedNandFlash_GetDeviceSizeInPages(
00093 const struct TranslatedNandFlash *translated);
00094
00095 extern unsigned long long TranslatedNandFlash_GetDeviceSizeInBytes(
00096 const struct TranslatedNandFlash *translated);
00097
00098 #endif
00099