nftl-user.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. * Parts of NFTL headers shared with userspace
  3. *
  4. */
  5. #ifndef __MTD_NFTL_USER_H__
  6. #define __MTD_NFTL_USER_H__
  7. #include <linux/types.h>
  8. /* Block Control Information */
  9. struct nftl_bci {
  10. unsigned char ECCSig[6];
  11. __u8 Status;
  12. __u8 Status1;
  13. }__attribute__((packed));
  14. /* Unit Control Information */
  15. struct nftl_uci0 {
  16. __u16 VirtUnitNum;
  17. __u16 ReplUnitNum;
  18. __u16 SpareVirtUnitNum;
  19. __u16 SpareReplUnitNum;
  20. } __attribute__((packed));
  21. struct nftl_uci1 {
  22. __u32 WearInfo;
  23. __u16 EraseMark;
  24. __u16 EraseMark1;
  25. } __attribute__((packed));
  26. struct nftl_uci2 {
  27. __u16 FoldMark;
  28. __u16 FoldMark1;
  29. __u32 unused;
  30. } __attribute__((packed));
  31. union nftl_uci {
  32. struct nftl_uci0 a;
  33. struct nftl_uci1 b;
  34. struct nftl_uci2 c;
  35. };
  36. struct nftl_oob {
  37. struct nftl_bci b;
  38. union nftl_uci u;
  39. };
  40. /* NFTL Media Header */
  41. struct NFTLMediaHeader {
  42. char DataOrgID[6];
  43. __u16 NumEraseUnits;
  44. __u16 FirstPhysicalEUN;
  45. __u32 FormattedSize;
  46. unsigned char UnitSizeFactor;
  47. } __attribute__((packed));
  48. #define MAX_ERASE_ZONES (8192 - 512)
  49. #define ERASE_MARK 0x3c69
  50. #define SECTOR_FREE 0xff
  51. #define SECTOR_USED 0x55
  52. #define SECTOR_IGNORE 0x11
  53. #define SECTOR_DELETED 0x00
  54. #define FOLD_MARK_IN_PROGRESS 0x5555
  55. #define ZONE_GOOD 0xff
  56. #define ZONE_BAD_ORIGINAL 0
  57. #define ZONE_BAD_MARKED 7
  58. #endif /* __MTD_NFTL_USER_H__ */