1/* 2 * $Id: nftl-user.h,v 1.2 2005/11/07 11:14:56 gleixner Exp $ 3 * 4 * Parts of NFTL headers shared with userspace 5 * 6 */ 7 8#ifndef __MTD_NFTL_USER_H__ 9#define __MTD_NFTL_USER_H__ 10 11/* Block Control Information */ 12 13struct nftl_bci { 14 unsigned char ECCSig[6]; 15 uint8_t Status; 16 uint8_t Status1; 17}__attribute__((packed)); 18 19/* Unit Control Information */ 20 21struct nftl_uci0 { 22 uint16_t VirtUnitNum; 23 uint16_t ReplUnitNum; 24 uint16_t SpareVirtUnitNum; 25 uint16_t SpareReplUnitNum; 26} __attribute__((packed)); 27 28struct nftl_uci1 { 29 uint32_t WearInfo; 30 uint16_t EraseMark; 31 uint16_t EraseMark1; 32} __attribute__((packed)); 33 34struct nftl_uci2 { 35 uint16_t FoldMark; 36 uint16_t FoldMark1; 37 uint32_t unused; 38} __attribute__((packed)); 39 40union nftl_uci { 41 struct nftl_uci0 a; 42 struct nftl_uci1 b; 43 struct nftl_uci2 c; 44}; 45 46struct nftl_oob { 47 struct nftl_bci b; 48 union nftl_uci u; 49}; 50 51/* NFTL Media Header */ 52 53struct NFTLMediaHeader { 54 char DataOrgID[6]; 55 uint16_t NumEraseUnits; 56 uint16_t FirstPhysicalEUN; 57 uint32_t FormattedSize; 58 unsigned char UnitSizeFactor; 59} __attribute__((packed)); 60 61#define MAX_ERASE_ZONES (8192 - 512) 62 63#define ERASE_MARK 0x3c69 64#define SECTOR_FREE 0xff 65#define SECTOR_USED 0x55 66#define SECTOR_IGNORE 0x11 67#define SECTOR_DELETED 0x00 68 69#define FOLD_MARK_IN_PROGRESS 0x5555 70 71#define ZONE_GOOD 0xff 72#define ZONE_BAD_ORIGINAL 0 73#define ZONE_BAD_MARKED 7 74 75 76#endif /* __MTD_NFTL_USER_H__ */ 77